poj1144Network(无向图割点数)
题目大意:给一张无向图,求割点数量。
题目分析:tarjan算法求割点。关于无向图割点,这里说的很清楚了。直接建图跑一遍tarjan算法即可。
详情请见代码:
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 101;
int adj[N][N];
bool flag[N][N],vis[N];
int low[N],dfn[N],subnets[N];
int n,dfns;
char s[N]; void dfs(int cur)
{
int i;
vis[cur] = true;
dfn[cur] = low[cur] = dfns ++;
for(i = 1;i <= adj[cur][0];i ++)
{
if(vis[adj[cur][i]] == false)
{
dfs(adj[cur][i]);
low[cur] = min(low[cur],low[adj[cur][i]]);
if(low[adj[cur][i]] >= dfn[cur])
subnets[cur] ++;
}
else
low[cur] = min(low[cur],dfn[adj[cur][i]]);
}
} void tarjan()
{
int i;
memset(vis,false,sizeof(vis));
memset(subnets,0,sizeof(subnets));
dfns = 1;
for(i = 1;i <= n;i ++)
if(vis[i] == false)
{
subnets[i] --;
dfs(i);
}
int ans = 0;
for(i = 1;i <= n;i ++)
if(subnets[i] > 0)
ans ++;
printf("%d\n",ans);
} int main()
{
int i,j,p;
freopen("in.txt","r",stdin);
while(scanf("%d",&n),n)
{
memset(flag,false,sizeof(flag));
memset(adj,0,sizeof(adj));
while(scanf("%d",&i),i)
{
gets(s);
p = 0;
while(s[p] && s[p] == ' ')
p ++;
while(sscanf(s + p,"%d",&j) == 1)
{
if(flag[i][j] == false)
{
flag[i][j] = flag[j][i] = true;
adj[i][++ adj[i][0]] = j;
adj[j][++ adj[j][0]] = i;
}
while(s[p] && s[p] != ' ')
p ++;
while(s[p] && s[p] == ' ')
p ++;
}
}
tarjan();
}
return 0;
}
//188K 16MS
poj1144Network(无向图割点数)的更多相关文章
- POJ1144 Network 无向图割点
题目大意:求以无向图割点. 定义:在一个连通图中,如果把点v去掉,该连通图便分成了几个部分,则v是该连通图的割点. 求法:如果v是割点,如果u不是根节点,则u后接的边中存在割边(u,v),或者v-&g ...
- tarkjan求无向图割点模板
#include<bits/stdc++.h> using namespace std; typedef long long ll; int n,m; ; ; struct node { ...
- HDU4587--TWO NODES(无向图割点,暴力出奇迹)这是我见过的时间最长的题。。。
TWO NODES Time Limit: 24000/12000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- UVA315- Network(无向图割点)
题目链接 题意: 给出一张无向图,求割点的个数 思路:非常裸的题目.直接套用模版就可以. 代码: #include <iostream> #include <cstdio> # ...
- Tarjan求无向图割点、桥详解
tarjan算法--求无向图的割点和桥 一.基本概念 1.桥:是存在于无向图中的这样的一条边,如果去掉这一条边,那么整张无向图会分为两部分,这样的一条边称为桥无向连通图中,如果删除某边后,图变成不 ...
- POJ 1523 SPF (无向图割点)
<题目链接> 题目大意: 给你一个连通的无向图,问你其中割点的编号,并且输出删除该割点后,原图会被分成几个连通分量. 解题分析: Tarjan求割点模板题. #include <cs ...
- POJ1523 SPF[无向图割点]
SPF Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8139 Accepted: 3723 Description C ...
- POJ1144Network(求割点个数)
题目链接 题意:一共n割点,然后若干行,每行第一个输入一个点,然后若干个点表示与他相连,0单独一行表示一个样例的结束.然后求图中的割点个数 割点:去掉该点之后得到的图不在连通,那么该店就是割点 一般割 ...
- SPF Tarjan算法求无向图割点(关节点)入门题
SPF 题目抽象,给出一个连通图的一些边,求关节点.以及每个关节点分出的连通分量的个数 邻接矩阵只要16ms,而邻接表却要32ms, 花费了大量的时间在加边上. // time 16ms 1 ...
随机推荐
- autofac使用笔记
在之前的项目中用来解耦的使用的轻型IOC框架是unity,它的使用也是很方便的提供在之前的文章的也提到过它的使用方式,但是使用久了之后发现了它的不足之处就是需要配置xml文件来对应的接口和实现的关系. ...
- linux case 语句
#!/bin/bash #$ 表示脚本名 #$n 表示第n个参数(n>) in ") echo '--=> A' ;; ") echo '--=> B' ;; * ...
- MYSQL 的 3 类数据类型
1.数据型: bool,float,double decimal(M,D) M是小数位数(精度)的总数,D是小数点(标度)后面的位数.DECIMAL整数最大位数(M)为65. smallint 小的整 ...
- 调用Windows属性窗口(居然是通过注册表来调用的)
简述 在Windows系统下.可以通过:右键 -> 属性,来查看文件/文件夹对应的属性信息,包括:常规.安全.详细信息等. 简述 共有类型 共有类型 首先,需要包含头文件: #include & ...
- Delphi获取系统服务描述信息
program Project1; {$APPTYPE CONSOLE} uses Windows, WinSvc; type SERVICE_DESCRIPTION = packed record ...
- Android 绘图工具库AChartEngine
From: http://www.oschina.net/p/achartengine AChartEngine是为android应用而设计的绘图工具库.目前该库的最新稳定版本是0.7,支持绘制以下类 ...
- JIRA官方:JIRA定制工作流
定制适合项目的工作流 JIRA提供了一个缺省工作流和一系列问题类型,非常适合缺陷追踪和软件开发.在使用中你可以随时根据实际情况对流程进行调整,确保流程能够快速的适应坏境变化. 使你的工作流图形化 使用 ...
- 【POJ 1679 The Unique MST】最小生成树
无向连通图(无重边),判断最小生成树是否唯一,若唯一求边权和. 分析生成树的生成过程,只有一个圈内出现权值相同的边才会出现权值和相等但“异构”的生成树.(并不一定是最小生成树) 分析贪心策略求最小生成 ...
- 【LeetCode练习题】Linked List Cycle II
Linked List Cycle Given a linked list, determine if it has a cycle in it. Follow up:Can you solve it ...
- #include <boost/unordered_set.hpp>
boost.unordered在C++标准容器std::set,std::multiset,std::map和std::multimap的基础上多实现了四个容器:boost::unordered_se ...