HDU 4738 Caocao's Bridges (割边)
来源:互联网 发布:淘宝物流跟踪怎么做的 编辑:程序博客网 时间:2024/06/13 18:42
坑点:
- 一开始就是不连通的时候,不需要去炸桥,所以是0.
- 如果是联通,并且最小的桥的权值为0,那么至少也得派一个人去炸。。。
- 注意判断边的次数。
#include <cstdio>#include <iostream>#include <string.h>#include <algorithm>using namespace std;const int maxn = 1100;struct edge{ int to,v,next;}ed[maxn*maxn*2];int cnte;int head[maxn];int cnt[maxn][maxn];void ae(int x,int y,int v){ ed[++cnte].to = y; ed[cnte].v = v; ed[cnte].next = head[x]; head[x] = cnte;}int ans;int dfn[maxn],low[maxn],vis[maxn],stak[maxn],cntc,cnts,index;void dfs(int u,int f){ dfn[u]=low[u]=++index; stak[cnts++] = u; vis[u] = 1; for(int i = head[u];i!=-1;i = ed[i].next){ int to = ed[i].to; if(f == to) continue; if(!dfn[to]){ dfs(to,u); low[u] = min(low[u],low[to]); if(dfn[u] < low[to] && cnt[u][to] == 1) { ans = min(ans,ed[i].v); } } else if(vis[to]){ low[u] = min(low[u],dfn[to]); } } if(dfn[u]==low[u]){ cntc++;int v; do{ v = stak[--cnts]; vis[v]=0; }while(v!=u); }}int n,m;int tarjan(){ int cnt2 = 0; for(int i = 1; i <= n;i++){ if(!dfn[i]){ dfs(i,-1); cnt2++; } } return cnt2;}void ini(){ memset(head,-1,sizeof(head));memset(dfn,0,sizeof(dfn)); memset(low,0,sizeof(low));memset(vis,0,sizeof(vis));memset(cnt,0,sizeof(cnt)); index = cnts = cntc = cnte = 0;}int main(){ int a,b,val; while(~scanf("%d%d",&n,&m),n||m){ ini(); ans = 50000; for(int i = 1;i <= m;i++){ scanf("%d%d%d",&a,&b,&val); ae(a,b,val);ae(b,a,val); cnt[a][b]++;cnt[b][a]++; } int cnt2 = tarjan(); if(cnt2 != 1){ printf("0\n");continue; } if(ans == 0) ans++; if(ans == 50000) puts("-1"); else printf("%d\n",ans); }}
阅读全文
0 0
- hdu - 4738 Caocao's Bridges 割边
- hdu 4738 Caocao's Bridges 割边无敌(trick)
- HDU-4738-Caocao's Bridges(割边)
- HDU 4738 Caocao's Bridges (割边)
- hdu 4738 Caocao's Bridges (割边/桥)
- hdu 4738 Caocao's Bridges 图的割边
- hdu 4738 Caocao's Bridges 【求最小代价的割边(桥)】
- HDU 4738Caocao's Bridges 邻接表tarjan 割桥
- HDU 4738 Caocao's Bridges(找割边)
- hdu 4738 Caocao's Bridges
- hdu 4738 Caocao's Bridges
- hdu 4738 Caocao's Bridges
- HDU:4738 Caocao's Bridges
- HDU 4738 Caocao's Bridges
- HDU 4738 Caocao's Bridges
- hdu 4738 - Caocao's Bridges
- hdu 4738 Caocao's Bridges
- HDU-4738Caocao's Bridges
- Unity3D学习记录——碰撞销毁物体
- Java面试宝典(5)算法
- 粗糙的区别prepareStatement:(为Statement的子类)与Statement
- Java面试宝典(1)Java基础部分
- Win7下设置一键关闭所有程序的功能
- HDU 4738 Caocao's Bridges (割边)
- 单用户UDP服务器的简单实现
- 十个让你变成糟糕的程序员的行为
- Java中File类创建文件
- poj 1436 Horizontally Visible Segments(线段树)(第二部分成段更新 不需要延迟标记 )
- HttpClient 之Fluent API 简单使用
- apache的commons-fileupload中FileItem类和ServletFileUpload
- 修改maven依赖的jre版本方法
- JAVA特性:继承