hdu 3849 (双联通求桥)
来源:互联网 发布:tensorflow syntaxnet 编辑:程序博客网 时间:2024/06/03 13:40
一道简单的双联通求桥的题目,,数据时字符串,,map用的不熟练啊,,,,,,,,,,,,,
#include <iostream>#include <cstring>#include <cstdio>#include <map>#include <string>#include <algorithm>#define N 10001using namespace std;int head[N],num,dfs[N],low[N],n,m,idx,bridge[N],bum;struct edge{int st,ed,next;}E[N*20];void addedge(int x,int y){E[num].st=x;E[num].ed=y;E[num].next=head[x];head[x]=num++;}int cmp(const void *a,const void *b){ return *(int *)a-*(int *)b;}void Tarjan(int u,int father){ int i,v; low[u]=dfs[u]=idx++; for(i=head[u];i!=-1;i=E[i].next) { v=E[i].ed; if(v==father)continue; if(dfs[v]==-1) { Tarjan(v,u); low[u]=low[u]>low[v]?low[v]:low[u]; if(low[v]>dfs[u])//桥 {bridge[bum++]=i; } } else low[u]=low[u]>dfs[v]?dfs[v]:low[u]; }}int main(){int i,x,y,j,t,sum;char str[2][200];scanf("%d",&t);while(t--) { scanf("%d%d",&n,&m);memset(head,-1,sizeof(head));num=0;sum=1;map<string,int>mp; map<int,string>mmp;for(i=0;i<m;i++){scanf("%s%s",str[0],str[1]);if(mp[str[0]]==0){mp[str[0]]=sum;mmp[sum]=str[0];sum++;}if(mp[str[1]]==0){mp[str[1]]=sum;mmp[sum]=str[1];sum++;}x=mp[str[0]];y=mp[str[1]];addedge(x,y);addedge(y,x);}memset(dfs,-1,sizeof(dfs));idx=0;bum=0;Tarjan(1,-1);for(i=1;i<=n;i++) { if(dfs[i]==-1) break; } if(i<=n){printf("0\n");continue;}printf("%d\n",bum);qsort(bridge,bum,sizeof(bridge[0]),cmp);for(j=0;j<bum;j++) { i=bridge[j]; i=(i/2*2); x=E[i].st; y=E[i].ed; if(x!=y) printf("%s %s\n",mmp[E[i].st].c_str(),mmp[E[i].ed].c_str()); }}return 0;}
- hdu 3849 (双联通求桥)
- hdu 3849(双联通求桥)
- hdu 4738 (双联通求桥)
- HDU 3849--By Recognizing These Guys, We Find Social Networks Useful【边双联通 && 求桥的数目 && 输出桥】
- HDU 5409 CRB and Graph Tarjan求桥,点双联通+思维好题
- Road Construction+求双联通分量、割点、桥+POJ
- poj3177 Redundant Paths 简单双联通求桥
- HDU 4612 Warm up(边双联通求树的直径)
- hdu 4005 边双联通
- HDU 4587 边双联通
- HDU 4738 双联通分量
- HDU 3849 双联通+Trie树+并查集
- HDU 3394 Railway (点双联通分量+桥)
- HDU 3836 Equivalent Sets (tarjan求强联通分量)
- Coconuts HDU - 5925 (离散化+dfs求联通块)
- hdu 4612 (双联通+树形DP)
- hdu 2242 (双联通+树形DP)
- hdu 2460 poj 3694 (双联通+LCA)
- hdu3518——后缀自动机
- LINUX下可加载模块的几个工具
- 在VC6.0中的调试
- Ulipad与有道词典抓词的冲突(Can't open the file GET )
- Acstract Factory 抽象工厂(创建型模式)笔记
- hdu 3849 (双联通求桥)
- Http通信
- .NET Framework版本与CLR版本之间的关系
- UVA 11039
- hdu1021 Fibonacci Again
- android apk混淆
- SURF源码分析之main.cpp
- tomcat7.0.40自带的webSocket的例子
- [Ubuntu]:linux下root账户忘记密码怎么办