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 ...
随机推荐
- WAS
http://pic.dhe.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=%2Fcom.ibm.websphere.express.doc%2Fin ...
- Windows Components Reference(Windows组件参考)
原文 http://www.msfn.org/board/topic/127287-windows-components-reference/ green means the component na ...
- (Inno setup打包)检测系统是否已安装程序,若已安装则弹出卸载提示的代码
原文 http://bbs.itiankong.com/thread-30983-1-5.html 有6天没研究pascal代码了,昨天晚上突然来了灵感,终于解决了苦思冥想好几天没能解决的问题, 因此 ...
- tomcat优化-有改protocol 和 缓存 集群方案
tomcat优化 在线上环境中我们是采用了tomcat作为Web服务器,它的处理性能直接关系到用户体验,在平时的工作和学习中,归纳出以下七种调优经验. 1. 服务器资源 服务器所能提供CPU.内存.硬 ...
- docker文章
https://training.docker.com/self-paced-training http://special.csdncms.csdn.net/BeDocker/ http://clo ...
- Bayesian Formulation on Cooperative Tracking
Suppose a joint state representing a set of \(N_{n}\) nodes moving in a field\[ \textbf{X}= \b ...
- 【hihocoder 1257 Snake Carpet】构造
2015北京区域赛现场赛第4题. 题面:http://media.hihocoder.com/contests/icpcbeijing2015/problems.pdf OJ链接:http://hih ...
- ACM计算几何题目推荐
//第一期 计算几何题的特点与做题要领: 1.大部分不会很难,少部分题目思路很巧妙 2.做计算几何题目,模板很重要,模板必须高度可靠. 3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面 ...
- skynet-源码分析1:目录下的文件整理
skynet是c和lua结合的一个开源游戏引擎,是云风所写,对我等屌丝来说,是很好的参考 先整理一下文件结构,然后再慢慢深入 主目录下有10个目录,105个文件, 具体包含的情况,我简单画了个图,明天 ...
- 杭电 HDU 4608 I-number
http://acm.hdu.edu.cn/showproblem.php?pid=4608 听说这个题是比赛的签到题......无语..... 问题:给你一个数x,求比它大的数y. y的要求: 1. ...