uva 315 Network 割点
来源:互联网 发布:带宽100m交换机的端口! 编辑:程序博客网 时间:2024/05/29 18:51
//uva 315//割点条件根节点有两个或两个以上节点//或者其他节点u有一个子女w,low[w]>=dfn[u];#include<bits/stdc++.h>using namespace std;const int MAXN=1000+5;struct Edge{ int from,to;};vector<Edge>edges;vector<int>G[MAXN*MAXN];int low[MAXN],dfn[MAXN],vis[MAXN],dep,ans,sub[MAXN];void addedge(int from,int to){ Edge tp; tp.from=from; tp.to=to; edges.push_back(tp); G[from].push_back(edges.size()-1);}void dfs(int u){ for(int i=0; i<G[u].size(); i++) { int v=edges[G[u][i]].to; if(!vis[v]) { vis[v]=1; dep++; dfn[v]=low[v]=dep; dfs(v); low[u]=min(low[u],low[v]); if(low[v]>=dfn[u]) { sub[u]++; } } else low[u]=min(low[u],dfn[v]); }}int main(){ int _,i,j,u,v,c,n; char st; while(~scanf("%d",&n)) { if(n==0) break; ans=0; edges.clear(); for(i=0; i<MAXN; i++) G[i].clear(); while(~scanf("%d",&u)) { if(u==0) break; while(1) { st=getchar(); if(st==10) break; scanf("%d",&v); addedge(u,v); addedge(v,u); } } memset(vis,0,sizeof(vis)); memset(sub,0,sizeof(sub)); dep=0; for(i=1; i<=n; i++) { if(vis[i]==0) { vis[i]=1; dep++; dfn[i]=low[i]=dep; dfs(i); if(sub[i]>=1)sub[i]-=1; } } for(i=1; i<=n; i++) { if(sub[i]) ans++; } printf("%d\n",ans); } return 0;}
0 0
- UVA 315 Network (割点)
- uva 315 Network 割点
- UVA 10765 (割点)
- 【割点】UVA
- [PKU 1144]Network(割点)
- POJ 1144 Network //割点
- Poj 1144 Network (割点)
- POJ 1144 Network【割点】
- UVA 315 - Network (求割点数模板题)
- UVA 1660 Cable TV Network [最小割] [图的连通度] [拆点]
- poj 1144 Network(割点)
- POJ1144 Network(判断割点)
- poj 1144 Network (割点)
- poj 1144 Network (割点模板)
- 【连通图|割点】POJ-1144 Network
- 【POJ 1144】 Network(割点入门)
- POJ 1144 Network【割点个数】
- poj 1144 Network (tarjan割点模板)
- Codeforces 543B Destroying Roads 【暴力 SPFA】
- 快速排序 温习 QuickSort
- C++输入一个字符串,将其逆序输出
- HDU 5533 Dancing Stars on Me
- Protobuf-net学习笔记
- uva 315 Network 割点
- 删除指定的文件夹(包括其中的所有文件)
- java基础知识点一(下)
- 中文词性标注以及命名实体识别
- Java并发编程:volatile关键字解析
- W3C学习资料汇总
- 计算机是如何启动的?
- Day14:使用斯坦福 NER 软件包实现你自己的命名实体识别器(Named Entity Recognition,NER)
- Throw 和 Throws的区别 推荐