求割点
来源:互联网 发布:虚拟专用网软件 编辑:程序博客网 时间:2024/06/13 15:31
//poj1144#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <vector>#define M 100100#define N 1100using namespace std;struct Node{ int v,next;}e[M];int head[N],e_num,n;int low[N],dfn[N],stack[N],dfs_num,top,root,d[N];void add_edge( int u, int v){ e[e_num].v=v; e[e_num].next=head[u]; head[u]=e_num++;}void dfs( int u, int fa ){ low[u]=dfn[u]=++dfs_num; stack[++top]=u; int cnt=0; for( int p=head[u];p!=-1; p=e[p].next ) { int v=e[p].v; if(!dfn[e[p].v] ) { dfs(v,u); cnt++; if(low[u]>low[v])low[u]=low[v]; if((u==root&&cnt>1)||(u!=root&&dfn[u]<=low[v]))d[u]=1; } else if(v!=fa&&low[u]>dfn[v])low[u]=dfn[v]; }}void solve(){ top=dfs_num=0; memset(d,0,sizeof(d)); memset(low,0,sizeof(low)); memset(dfn,0,sizeof(dfn)); for( root=1; root<=n; root++ ) { if(!dfn[root])dfs(root,0); } int ans=0; for( int i=0; i<=n; i++ )ans+=d[i]; printf("%d\n",ans);}int main(){ //freopen("in.txt","r",stdin); int u,v; char ch; while( scanf("%d",&n),n) { memset(head,-1,sizeof(head)); e_num=0; while(scanf("%d%c",&u,&ch),u) { while(~scanf("%d%c",&v,&ch)) { add_edge(u,v); add_edge(v,u); if(ch=='\n')break; } } solve(); } return 0;}
- 求割点
- 求割点
- 求割点
- 求割点
- 求割点
- 求割点
- 求割点
- POJ1523求割点
- 求割点个数
- tarjan求割点
- 求割点模版
- lightoj1063【求割点】
- Tarjan求割点
- Tarjan求割点
- UVA 315 Network 求割点、套版题 求割点
- POJ 1523 SPF //求割点
- POJ1144 Network 求割点
- tarjan求割点 poj 1144
- 美妙的模电2013/4/18
- IOS开发之深拷贝与浅拷贝(转自博客园)
- hdu 3572最大流
- 404错误是什么意思?为什么是404?
- jquery中的子元素过滤选择器
- 求割点
- Time
- Linux SVN commands
- OpenCV中对Mat里面depth,dims,channels,step,data,elemSize和数据地址计算的理解
- Android高手进阶教程(十五)之---通过Location获取Address的使用!
- jquery中的表单对象属性过滤选择器
- GnuPG(英文:GNU Privacy Guard,简称:GPG)简介
- 黑马程序员---异常的总结
- JDBC以及相关技术学习(八)----JDBC元数据