POJ 3177 Redundant Paths(Tarjan)
2013-04-16 19:52
381 查看
题目链接
看这个题解:http://blog.csdn.net/zhang20072844/article/details/8145588
对于Tarjan还是不太理解。
看这个题解:http://blog.csdn.net/zhang20072844/article/details/8145588
对于Tarjan还是不太理解。
#include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> using namespace std; #define N 10001 #define M 50001 struct node { int u,v,next; } edge[M+10]; int t,top,scnt; int DFN[N+1],Low[N+1],first[N+1]; int cnt[N+1]; bool mat[5001][5001]; void CL() { t = 0; t = scnt = top = 0; memset(first,-1,sizeof(first)); memset(DFN,0,sizeof(DFN)); memset(mat,0,sizeof(mat)); } void add(int u,int v) { edge[t].u = u; edge[t].v = v; edge[t].next = first[u]; first[u] = t ++; } void Tarjan(int u,int father) { int v,i; DFN[u] = Low[u] = ++ t; for(i = first[u]; i != -1; i = edge[i].next) { v = edge[i].v; if(!DFN[v]) { Tarjan(v,u); if(Low[u] > Low[v]) { Low[u] = Low[v]; } } else if(v != father&&Low[u] > DFN[v]) { Low[u] = DFN[v]; } } } int main() { int n,m,sv,ev,i,j,v,ans; while(scanf("%d%d",&n,&m)!=EOF) { CL(); memset(cnt,0,sizeof(cnt)); for(i = 1; i <= m; i ++) { scanf("%d%d",&sv,&ev); if(!mat[sv][ev]) { add(sv,ev); add(ev,sv); mat[sv][ev] = mat[ev][sv] = true; } } t = 0; Tarjan(1,1); for(i = 1;i <= n;i ++) { for(j = first[i];j != -1;j = edge[j].next) { v = edge[j].v; if(Low[v] != Low[i]) cnt[Low[i]] ++; } } ans = 0; for(i = 1;i <= n;i ++) { if(cnt[i] == 1) ans ++; } printf("%d\n",(ans+1)/2); } return 0; }
相关文章推荐
- POJ 3177 Redundant Paths(Tarjan)
- POJ 3177 Redundant Paths (tarjan bcc)
- poj 3177 Redundant Paths (tarjan)
- poj 3177 Redundant Paths(Tarjan,边双连通分量)
- POJ 3177--Redundant Paths【无向图添加最少的边成为边双连通图 && tarjan求ebc && 缩点构造缩点树】
- POJ 3177 Redundant Paths(Tarjan_BCC+缩点)
- 【POJ 3177】Redundant Paths(Tarjan求桥、边双连通分量)
- POJ 3177--Redundant Paths【无向图增加最少的边成为边双连通图 && tarjan求ebc && 缩点构造缩点树】
- POJ 3352 Road Construction POJ 3177 Redundant Paths(边双连通图 Tarjan+缩点)
- POJ - 3177 Redundant Paths (边双连通 tarjan)
- POJ-3177 Redundant Paths (边双连通分量[Tarjan])
- POJ 3177 Redundant Paths
- poj 3177 Redundant Paths
- POJ,3177 Redundant Paths
- poj 3177 & 3352 【无向图双连通分量Tarjan】
- POJ 3177 Redundant Paths
- poj 3177 Redundant Paths
- 【边双连通 && 加几条边变成边双连通】POJ - 3177 Redundant Paths
- POJ 3177 Redundant Paths
- POJ 3177 Redundant Paths(边连通分量)