POJ 1523 Tarjan求割点
来源:互联网 发布:拔罐 菲尔普斯 知乎 编辑:程序博客网 时间:2024/05/17 01:43
思路:
Tarjan
if(dfn[x]<=low[v[i]]){ if(x!=1)sub[x]++; else S++; }
//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>#define N 1005using namespace std;int xx,yy,first[N],next[N*N*2],v[N*N*2],tot,cnt,T,S,sub[N],f,cases;int dfn[N],low[N],vis[N];void add(int x,int y){v[tot]=y,next[tot]=first[x],first[x]=tot++;}void tarjan(int x,int fa){ dfn[x]=low[x]=++cnt; for(int i=first[x];~i;i=next[i]){ if(!dfn[v[i]]){ tarjan(v[i],x);low[x]=min(low[x],low[v[i]]); if(dfn[x]<=low[v[i]]){ if(x!=1)sub[x]++; else S++; } } else low[x]=min(low[x],dfn[v[i]]); }}int main(){ memset(first,-1,sizeof(first)); while(scanf("%d",&xx)&&xx){ st:scanf("%d",&yy); add(xx,yy),add(yy,xx); } tarjan(1,-1); T=1; printf("Network #%d\n",++cases); if(S>1)sub[1]=S-1; for(int i=1;i<=1000;i++) if(sub[i])printf(" SPF node %d leaves %d subnets\n",i,sub[i]+1),f=1; if(!f)puts(" No SPF nodes"); puts(""); scanf("%d",&xx); if(xx==0)return 0; else{ tot=cnt=S=f=0; memset(sub,0,sizeof(sub)); memset(first,-1,sizeof(first)); memset(dfn,0,sizeof(dfn)); memset(vis,0,sizeof(vis)); goto st; }}
0 0
- poj 1523 tarjan求割点
- POJ 1523 Tarjan求割点
- POJ 1523 Tarjan求割点
- POJ 1523 SPF Tarjan求割点
- POJ 1523:SPF tarjan求割点
- poj 1523 SPF(tarjan求割点)
- POJ 1523 SPF tarjan求割点模板
- 【POJ 1523】SPF(Tarjan求割点)
- tarjan求割点 poj 1144
- poj 1523 SPF (tarjan)
- POJ 1523 SPF(Tarjan)
- [poj 1144]Network[Tarjan求割点]
- Poj 1144 Network【Tarjan求割点】
- 【tarjan双连通求割点&连通分量】POJ 1523
- POJ 1523 SPF tarjan算法入门
- Poj 1523 SPF(割点 + tarjan算法)
- POJ 1523 / ZOJ 1119 - Tarjan算法
- POJ-1523 SPF (割点[Tarjan])
- 玩无限消乐的设计示例(高级篇)积分与特效的数值加载
- Visual Studio 2012 编译错误【error C4996: 'scanf': This function or variable may be unsafe. 】的解决方案
- 路由器的工作原理
- typedef struct和struct区别
- LOG4J2 异步日志
- POJ 1523 Tarjan求割点
- PHP底层赋值原理
- Android项目集成信鸽推送过程详解
- 插入排序
- Java锁--Lock实现原理(底层实现)
- Java(线程的概念)(线程和进程的比较)(多线程的优点)
- Android Studio编译优化
- 【OpenCV入门教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑
- 18. 4Sum **