Uva 796 Critical Links 【求桥模板记录】
来源:互联网 发布:javascript代码例子 编辑:程序博客网 时间:2024/05/21 06:47
UVA 796 https://vjudge.net/problem/20839/origin
思路:
记录Tarjan求桥模板。
Ac代码:
#include<stdio.h>#include<string.h>#include<iostream>#include<vector>#include<algorithm>using namespace std;struct node{ int from,to,next,flag;}e[1500000];int cont,tot,cnt,n;int head[150000];int vis[150000];int dfn[150000];int low[150000];int fa[150000];void add(int from,int to){ e[cont].flag=0; e[cont].to=to; e[cont].next=head[from]; head[from]=cont++;}void tarjan(int u,int pre){ dfn[u]=low[u]=++cnt; for(int i=head[u];i!=-1;i=e[i].next) { int v=e[i].to; if(v == pre)continue; if(!dfn[v]) { tarjan(v,u); if(low[u]>low[v])low[u]=low[v]; ///桥 if(low[v]>dfn[u]) { e[i].flag=1; e[i^1].flag=1; tot++; } } else if(low[u]>dfn[v]) low[u]=dfn[v]; }}void Slove(){ tot=0,cnt=0; memset(dfn,0,sizeof(dfn)); memset(low,0,sizeof(low)); memset(vis,0,sizeof(vis)); for(int i=1;i<=n;i++)if(vis[i]==0)tarjan(i,-1); printf("%d critical links\n",tot); vector<pair<int,int> >ans; for(int u=1;u<=n;u++) { for(int i=head[u];i!=-1;i=e[i].next) { if(e[i].flag&&e[i].to>u) { ans.push_back(make_pair(u,e[i].to)); } } } sort(ans.begin(),ans.end()); for(int i=0;i<ans.size();i++) { printf("%d - %d\n",ans[i].first-1,ans[i].second-1); } printf("\n");}int main(){ while(~scanf("%d",&n)) { cont=0; memset(head,-1,sizeof(head)); for(int i=0; i<n; i++) { int u,num; scanf("%d (%d)",&u,&num); u++; while(num--) { int v; scanf("%d",&v); v++; if(v<=u)continue; add(u,v); add(v,u); } } Slove(); } return 0;}
阅读全文
0 0
- Uva 796 Critical Links 【求桥模板记录】
- UVA 796 - Critical Links (求桥,模板题)
- UVA 796 - Critical Links【求桥】
- UVA 796 Critical Links 求桥 .
- UVA 796 Critical Links(求桥)
- UVA 796 - Critical Links (求桥按序输出)
- 796 Critical Links( 求无向图中的桥--模板)
- UVA 796 Critical Links
- UVA 796 Critical Links
- UVA 796 Critical Links (桥)
- UVA 796 Critical Links (求无向图的桥)
- UVA 796 Critical Links(Tarjan求无向图中的桥)
- UVa 796 Critical Links(无向图求割边)
- UVA 796 Critical Links(Tarjan求割边)
- Light OJ 1026 Critical Links 求桥
- LightOJ 1026 Critical Links 求桥
- UVA796 Critical Links (tanjar求桥)
- UVA 796 Critical Links(无向图求桥)
- dubbo学习
- python库学习笔记——BeautifulSoup处理子标签、后代标签、兄弟标签和父标签
- 权限管理设计的方法
- SQL 语句(一)
- Spring切入点表达式 expression="execution(*service..*.*(..))"
- Uva 796 Critical Links 【求桥模板记录】
- Codeforces 853B Round #433 Div2D& Div1B Jury Meeting:差分前缀和+模拟
- Codeforces Round #433 (Div. 2) A. Fraction
- Linux基础之内核态与用户态
- hdu 4333(扩展KMP)
- IOS--聊天界面底部菜单栏
- 上位机与下位机程序配合是 下位机程序崩溃
- 浅谈线性表(一)【帆帆帆笔记系列】
- Python学习笔记