poj - 1144 - Network(连通分量)
来源:互联网 发布:java图片转base64编码 编辑:程序博客网 时间:2024/06/05 03:46
题意:求一个无向图的割顶(点)。
题目链接:http://poj.org/problem?id=1144
——>>low[i]为i和i的后代能连到dfs中层次最浅的结点,对于一个结点u,如果u不是根且low[u] >= pre[u],或者u是根且u的”孩子“(与根相连的点数减去其反向边数)不只1个,则u是割顶(点)。
#include <cstdio>#include <vector>#include <cstring>#include <algorithm>using namespace std;const int maxn = 100 + 10;int pre[maxn], low[maxn], N, dfs_clock;bool iscut[maxn];vector<int> G[maxn];void init(){ dfs_clock = 0; memset(pre, 0, sizeof(pre)); memset(iscut, 0, sizeof(iscut));}int dfs(int u, int fa){ int lowu = pre[u] = ++dfs_clock, child = 0; int cnt = G[u].size(); for(int i = 0; i < cnt; i++) { int v = G[u][i]; if(!pre[v]) { child++; int lowv = dfs(v, u); lowu = min(lowu, lowv); if((u == 1 && child > 1) || (u != 1 && pre[u] <= low[v])) iscut[u] = 1; } else if(pre[v] < pre[u] && v != fa) lowu = min(lowu, pre[v]); } return low[u] = lowu;}int main(){ int u, v, i; while(scanf("%d", &N) == 1 && N) { for(i = 1; i <= N; i++) G[i].clear(); while(scanf("%d", &u) == 1 && u) { while(getchar() != '\n') { scanf("%d", &v); G[u].push_back(v); G[v].push_back(u); } } init(); dfs(1, -1); int cnt = 0; for(i = 1; i <= N; i++) if(iscut[i]) cnt++; printf("%d\n", cnt); } return 0;}
- poj - 1144 - Network(连通分量)
- POJ 1144 Network(无向图连通分量求割点)
- POJ 1236 Network of Schools(强连通分量)
- POJ 1236 Network of Schools(强连通分量)
- POJ 1236 Network of Schools(强连通分量)
- POJ 1236 Network of Schools(强连通分量)
- poj 1236 Network of Schools(强连通分量 Tarjan)
- poj 1236 Network of Schools(强连通分量)
- POJ 3694 Network(强连通分量+LCA)
- POJ-1236-Network of Schools(强连通分量)
- POJ-1236 Network of Schools (强连通分量[Tarjan])
- POJ 1236 Network of Schools (强连通分量tarjan)
- 【POJ 1236】Network of Schools(强连通分量_tarjan)
- poj 3694 Network 连通分量+LCA
- poj 1236 Network of Schools(强连通分量构造强连通图)
- poj 1144 Network 联通分量
- POJ 1236 Network of Schools (强连通分量,块,缩点)
- POJ 1236 Network of Schools(强连通分量)#by zh
- HTML5开发之路
- 自言自语
- nginx实现wordpress的固定链接
- nginx实现301重定向
- [强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)
- poj - 1144 - Network(连通分量)
- hdu 3172 && hdu 3047
- C++编程的调试技巧
- 算法——素数判定方法
- Aspose Word模版使用总结篇(2)
- 一、Linux内核分析
- 嵌入式学习-嵌入式的组成特点,开发流程等
- hdu 1712 DP
- 游戏后台之内存管理篇