HDU4738 Caocao's Bridges
来源:互联网 发布:暖气片专用晾衣架 淘宝 编辑:程序博客网 时间:2024/05/16 05:32
双连通分量
题目传送门
明天就考试了QAQ
题目大意:给你一张无向图,问图中权值最小的桥的权值。
据说NOIp会考边双。。。赶紧学一下。
边双裸题啊,Tarjan直接缩,如果有两个及以上的连通块就直接输出-1.
注意当桥的权值为0时答案仍然是1,因为仍然需要派一个人去炸桥。
代码:
#include<cstdio>#include<cstring>#include<algorithm>#define MAXN 1000using namespace std;struct edge{ int next,to,dis;}ed[MAXN*MAXN*2+5];int n,m,k,p,num,ans;int h[MAXN+5],dfn[MAXN+5],low[MAXN+5];bool f[MAXN+5];void addedge(int x,int y,int z){ ed[k].next=h[x]; ed[k].to=y; ed[k].dis=z; h[x]=k++;}void Tarjan(int x,int e){ dfn[x]=low[x]=++p; for (int i=h[x];~i;i=ed[i].next) if (i!=e){ int v=ed[i].to; if (!dfn[v]){ Tarjan(v,i^1); low[x]=min(low[x],low[v]); if (low[v]>dfn[x]) ans=min(ans,ed[i].dis); } else low[x]=min(low[x],dfn[v]); } num++;}int main(){ while (scanf("%d%d",&n,&m)){ if (n==0&&m==0) break; memset(h,-1,sizeof(h)); k=0; for (int i=1;i<=m;i++){ int u,v,d; scanf("%d%d%d",&u,&v,&d); addedge(u,v,d); addedge(v,u,d); } p=0; ans=0x7fffffff; num=0; memset(dfn,0,sizeof(dfn)); memset(low,0,sizeof(low)); Tarjan(1,-1); if (num<n) printf("0\n"); else if (ans==0x7fffffff) printf("-1\n"); else if (ans==0) printf("1\n"); else printf("%d\n",ans); } return 0;}
阅读全文
1 0
- HDU4738-Caocao's Bridges
- HDU4738 Caocao's Bridges
- HDU4738 Caocao's Bridges(桥)
- 无向图求桥 hdu4738 Caocao's Bridges
- HDU4738——Caocao's Bridges
- HDU4738 Caocao's Bridges【强连通】
- HDU4738 Caocao's Bridges (求桥)
- 【桥】HDU4738[Caocao's Bridges]题
- Caocao's Bridges hdu4738 (网络赛 杭州赛区) hdu 4738
- hdu4738 Caocao's Bridges 无向图 tarjan 求桥
- hdu4738 Caocao's Bridges(双连通分量割边/桥)
- Caocao's Bridges HDOJ4738
- HDU Caocao's Bridges
- Caocao's Bridges HDU
- hdu 4738 Caocao's Bridges
- hdu 4738 Caocao's Bridges
- hdu 4738 Caocao's Bridges
- HDU:4738 Caocao's Bridges
- react学习笔记一
- dubbo和redis修改密码
- MyBatis:Parameter Maps collection does not contain value for 的问题解决
- Dalvik虚拟机与Java虚拟机的区别
- 简单计算1+2+3+.......+10 的值
- HDU4738 Caocao's Bridges
- java面向对象的3大特征——封装,继承,多态
- 危险报警
- Leetcode:349. Intersection of Two Arrays
- qtcreator4.4.1远程调试 gdbserver7.8 termcap1.3.1
- vue学习笔记—vue基础(二)
- leetcode(263,389) python实现
- MatConvNet 使用VGG网络模型对图像做分类处理
- 多数相乘之和