LightOJ1026-Critical Links-tarjan
来源:互联网 发布:java内存泄露代码 编辑:程序博客网 时间:2024/05/16 23:43
题目大意:给你一张无向图,让你求桥的个数有多少个,桥就是一张连通图如果把某条边去掉,这张图就变成了两张;
题目解析:用tarjan算法,其中dfn[i]表示dfs时到第i个点的时候的时间标号(从0开始),low[i]表示第i个点能追溯到dfn最小的那个点,那么在tarjan枚举的时候,只要low[v]>dfs[u]就是桥了,因为第v个点没有路能够通往u上面的图;
AC代码:
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<vector>using namespace std;const int N=10010;const int M=100010;vector<int>vec[N];pair<int,int>edge[M];int low[N],dfn[N],cnt,ans;void tarjan(int u,int father){int i,v;low[u]=dfn[u]=cnt++;for(i=0;i<vec[u].size();i++){v=vec[u][i];if(dfn[v]==-1){tarjan(v,u);low[u]=min(low[u],low[v]);}else if(father!=v)low[u]=min(low[u],dfn[v]);if(low[v]>dfn[u]){if(u>v)edge[ans++]=make_pair(v,u);else edge[ans++]=make_pair(u,v);}}}int main(){int cas,c,i,n,k,u,v,j;scanf("%d",&cas);for(c=1;c<=cas;c++){for(i=0;i<N;i++)vec[i].clear();cnt=0;ans=0;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d (%d)",&u,&k);for(j=0;j<k;j++){scanf("%d",&v);vec[u].push_back(v);}}memset(dfn,-1,sizeof(dfn));memset(low,-1,sizeof(low));for(i=0;i<n;i++){if(dfn[i]==-1){tarjan(i,-1);}} sort(edge,edge+ans);printf("Case %d:\n", c); printf("%d critical links\n", ans); for(i=0; i<ans; ++ i) printf("%d - %d\n", edge[i].first, edge[i].second);}return 0;}
0 0
- LightOJ1026-Critical Links-tarjan
- lightoj1026【tarjan】
- LightOJ 1026 - Critical Links (tarjan 找桥)
- UVA 796 Critical Links(Tarjan求割边)
- UVA 796 Critical Links(Tarjan求无向图中的桥)
- UVA 796 Critical Links
- UVA 796 Critical Links
- UVA796-Critical Links
- LightOJ 1026 Critical Links[求割边]
- LightOJ - 1026 Critical Links(桥)
- Light OJ 1026 Critical Links 求桥
- UVA 796 - Critical Links【求桥】
- UVa 796 Critical Links(无向图求割边)
- Critical Links(连通图 桥)
- UVA 796 Critical Links (桥)
- UVA 796 Critical Links 求桥 .
- UVA 796 Critical Links(求桥)
- LightOJ 1026 Critical Links 求桥
- 性能优化之避免在循环里面操作IO
- springMVC初步入门(一)
- 迪杰斯特拉dijkstar(算法个人观点)
- m个苹果放入n个盘子
- 删除算法
- LightOJ1026-Critical Links-tarjan
- android studio 运行程序报:Session 'app': Error Installing APK,解决方案
- 将数据库中查出的列表以指定的 id 作为数组的键名
- 一个非常简单的抽奖游戏
- Python_主成分分析
- 系统优化-----sysctl.conf文件内核设置参数详解
- java堆栈内存解释
- Linux命令之"less"
- Mac苹果电脑 安装virtualBox