/*
题意:给出一个无向图,去掉一条权值最小边,使这个无向图不再连同! tm太坑了...
1,如果这个无向图开始就是一个非连通图,直接输出0
2,重边(两个节点存在多条边, 权值不一样)
3,如果找到了桥的最小权值为0,也就是桥上的士兵数为0,那么还是要最少派一个
士兵过去炸掉桥! 思路:假设每两个节点最多只有一条边进行相连!
进行tarjan算法,如果该算法调用了超过2次,说明这个原图就是不连通的!
否则在tarjan算法中将桥存起来!然后我们遍历每一座桥,看一看我们找到的
桥(连接的两个定点分别是u, v)是不是(u, v)只有一条路相连接,如果是的,
那么就跟新最小值!
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define M 1000005
#define INF 0x3f3f3f3f
#define N 1005
using namespace std;
struct EDGE{
int u, v, w, nt;
EDGE(){}
EDGE(int u, int v, int w, int nt){
this->u=u;
this->v=v;
this->w=w;
this->nt=nt;
}
}; EDGE edge[M];
EDGE brige[M];
int first[N];
int low[N], pre[N];
int dfs_clock;
int n, m, cnt, ret; void tarjan(int u, int fa){
low[u]=pre[u]=++dfs_clock;
for(int e=first[u]; e!=-; e=edge[e].nt){
int v=edge[e].v; if(!pre[v]){
tarjan(v, u);
low[u]=min(low[u], low[v]);
if(low[v]>pre[u])
brige[ret++]=edge[e];
}
else if(v!=fa && pre[u]>pre[v])
low[u]=min(low[u], pre[v]);
}
} int main(){
while(scanf("%d%d", &n, &m) && (n||m)){
memset(first, -, sizeof(first));
cnt=;
while(m--){
int u, v, w;
scanf("%d%d%d", &u, &v, &w);
edge[cnt]=EDGE(u, v, w, first[u]);
first[u]=cnt++;
edge[cnt]=EDGE(v, u, w, first[v]);
first[v]=cnt++;
}
dfs_clock=;
ret=;
memset(low, , sizeof(low));
memset(pre, , sizeof(pre));
int flag=;
for(int i=; i<=n; ++i)
if(!pre[i]){
++flag;
if(flag==) break;
tarjan(i, -);
} int minNum=INF;
if(flag==) minNum=;
else{
for(int i=; i<ret; ++i)
if(brige[i].w<minNum){//对假定的桥判断
int cc=;
for(int e=first[brige[i].u]; e!=-; e=edge[e].nt)
if(edge[e].v==brige[i].v) ++cc;
if(cc==) minNum=brige[i].w;//说明是真正的桥
}
if(minNum==INF) minNum=-;
else if(minNum==) minNum=;//这一句不要忘记了!
}
printf("%d\n", minNum);
}
return ;
}

hdu Caocao's Bridges(无向图边双连通分量,找出权值最小的桥)的更多相关文章

  1. hdu-4738.Caocao's Bridges(图中权值最小的桥)

    Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  2. POJ 3352 无向图边双连通分量,缩点,无重边

    为什么写这道题还是因为昨天多校的第二题,是道图论,HDU 4612. 当时拿到题目的时候就知道是道模版题,但是苦于图论太弱.模版都太水,居然找不到. 虽然比赛的时候最后水过了,但是那个模版看的还是一知 ...

  3. Expm 9_3 无向图的双连通分量问题

      [问题描述] 给定一个无向图,设计一个算法,判断该图中是否存在关节点,并划分双连通分量. package org.xiu68.exp.exp9; import java.util.Stack; p ...

  4. HDU 4612——Warm up——————【边双连通分量、树的直径】

    Warm up Time Limit:5000MS     Memory Limit:65535KB     64bit IO Format:%I64d & %I64u Submit Stat ...

  5. poj 2942 Knights of the Round Table(无向图的双连通分量+二分图判定)

    #include<cstdio> #include<cstring> #include<cmath> #include<cstdlib> #includ ...

  6. Road Construction(无向图的双连通分量)

    http://poj.org/problem?id=3352 题意:给出一个有n个顶点m条边的无向连通图,问至少添加几条边,使删除任意一条边原图仍连通. 思路:一个边双连通图删除任意一条边仍为连通图. ...

  7. [Tarjan系列] Tarjan算法求无向图的双连通分量

    这篇介绍如何用Tarjan算法求Double Connected Component,即双连通分量. 双联通分量包括点双连通分量v-DCC和边连通分量e-DCC. 若一张无向连通图不存在割点,则称它为 ...

  8. UVALive 3523 Knights of the Round Table 圆桌骑士 (无向图点双连通分量)

    由于互相憎恨的骑士不能相邻,把可以相邻的骑士连上无向边,会议要求是奇数,问题就是求不在任意一个简单奇圈上的结点个数. 如果不是二分图,一定存在一个奇圈,同一个双连通分量中其它点一定可以加入奇圈.很明显 ...

  9. Gym - 100712H Bridges(边—双连通分量)

    https://vjudge.net/problem/Gym-100712H 题意: 给出一个图,求添加一条边后最少的桥数量. 思路: 参考了ZSQ大神的题解http://blog.csdn.net/ ...

随机推荐

  1. Core Audio(一)

    Core Audio APIs core audio apis是vista之后引入的,不使用与之前的windows版本:core audio apis提供访问endpoint devices,比如耳机 ...

  2. premierepro破解

    1.安装硬解 360云盘 破解教程:mac sky/破解安装说明.rtf 破解软件:mac sky/Smart Adobe CS6 Blocker v1.1.app 安装文件:mac sky/Prem ...

  3. java代码中获取classpath路径

    Javaweb工程中,有时候需要自己手动的去读取classpath下面的配置文件,这里总结一点读取classpath路径的方法,分享一下. 方法一: String path = Test.class. ...

  4. delphi 屏幕截屏

    function GetScreenAll: TBitmap; // 截取全屏 var C: TCanvas; begin C := TCanvas.Create; result := TBitmap ...

  5. 读bootstrap2.3.2有感2

    排版: Bootstrap定义的全局 font-size 是 14px,line-height 是 20px.这些样式应用到了 <body> 和所有的段落上.另外,对 <p> ...

  6. WIN8应用隐私声明

    隐私权声明 本应用连接网络仅为控制硬件设备,不会收集你的个人信息,也不共享你个个人信息. 应用名称 雅典娜移动客户端 关于本应用 本应仅为控制设备应用,不关注任何配置相关信息,所有数据均来自服务器端. ...

  7. Couchbase N1QL

    Couchbase的 N1QL已经DP4了,在官方的文档中,Select * From like-table 这个like-table实际上指的是Couchbase中Bucket,那么对于早起版本Co ...

  8. MQTT V3.1----flow

    该文章转自:聂永的博客(http://www.blogjava.net/yongboy/archive/2014/02/15/409893.html) 网络故障 在任何网络环境下,都会出现一方连接失败 ...

  9. 《kali linux 渗透测试初级教程》免费下载

    Kali Linux系列教程是在51cto上售卖的入门教程,售价100元.每天都有很多网友找我要全部教程,也有人偷偷的录制了教程.索性公开出来,如果您觉得还可以的话,希望可以选择发个小红包或者转发 获 ...

  10. 微信自定义分享到朋友圈API

    <script src="http://s0.qhimg.com/!249ce048/WeixinApi.js" type="text/javascript&quo ...