Caocao's Bridges

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5595    Accepted Submission(s):
1757

Problem Description
Caocao was defeated by Zhuge Liang and Zhou Yu in the
battle of Chibi. But he wouldn't give up. Caocao's army still was not good at
water battles, so he came up with another idea. He built many islands in the
Changjiang river, and based on those islands, Caocao's army could easily attack
Zhou Yu's troop. Caocao also built bridges connecting islands. If all islands
were connected by bridges, Caocao's army could be deployed very conveniently
among those islands. Zhou Yu couldn't stand with that, so he wanted to destroy
some Caocao's bridges so one or more islands would be seperated from other
islands. But Zhou Yu had only one bomb which was left by Zhuge Liang, so he
could only destroy one bridge. Zhou Yu must send someone carrying the bomb to
destroy the bridge. There might be guards on bridges. The soldier number of the
bombing team couldn't be less than the guard number of a bridge, or the mission
would fail. Please figure out as least how many soldiers Zhou Yu have to sent to
complete the island seperating mission.
 
Input
There are no more than 12 test cases.

In each
test case:

The first line contains two integers, N and M, meaning that
there are N islands and M bridges. All the islands are numbered from 1 to N. ( 2
<= N <= 1000, 0 < M <= N2 )

Next M lines describes
M bridges. Each line contains three integers U,V and W, meaning that there is a
bridge connecting island U and island V, and there are W guards on that bridge.
( U ≠ V and 0 <= W <= 10,000 )

The input ends with N = 0 and M =
0.

 
Output
For each test case, print the minimum soldier number
Zhou Yu had to send to complete the mission. If Zhou Yu couldn't succeed any
way, print -1 instead.
 
Sample Input
3 3
1 2 7
2 3 4
3 1 4
3 2
1 2 7
2 3 4
0 0
 
Sample Output
-1
4
 
Source
 
 
/*
hdu4738
1.原图可能不联通 这时不需要派人去炸桥 直接输出 0
2.有重边
3.可能有权值为0的桥 但我们必须要有一个人去带炸弹啊 所以这是输出 1
*/
#include<iostream>
#include<cstdio>
#include<cstring> #define N 1001 using namespace std;
int n,m,cnt,ans,flag;
int head[N],dfn[N],low[N],fa[N];
struct edge{
int u,v,w,net;
}e[N*N*]; inline int read()
{
int x=,f=;char c=getchar();
while(c>''||c<''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} inline void add(int u,int v,int w)
{
e[++cnt].v=v;e[cnt].w=w;e[cnt].net=head[u];head[u]=cnt;
} void init()
{
memset(low,,sizeof low);memset(dfn,,sizeof dfn);
memset(fa,,sizeof fa);memset(head,,sizeof head);
memset(e,,sizeof e);cnt=flag=;
} void Tarjan(int u,int father)
{
dfn[u]=low[u]=++cnt;
for(int i=head[u];i;i=e[i].net)
{
int v=e[i].v;
if(i==father+) continue;
if(!dfn[v])
{
Tarjan(v,i);low[u]=min(low[u],low[v]);
if(low[v]>dfn[u]) ans=min(ans,e[i].w);
}
low[u]=min(low[u],dfn[v]);//注意
}
} int main()
{
freopen("ly.txt","r",stdin);
int x,y,z;
while()
{
init();
n=read();m=read();
if(!n && !m) break;
for(int i=;i<=m;i++)
{
x=read();y=read();z=read();
add(x,y,z);add(y,x,z);
}cnt=;
ans=0x3f3f3f3f;
for(int i=;i<=n;i++) if(!dfn[i]) flag++,Tarjan(i,-);
if(flag>){printf("0\n");continue;}
ans=ans==0x3f3f3f3f?-:ans;ans=ans==?:ans;
printf("%d\n",ans);
}
return ;
}
 

hdu4738(边双连通分量,桥)的更多相关文章

  1. Graph_Master(连通分量_A_双连通分量+桥)

    hdu 5409 题目大意:给出一张简单图,求对应输入的m条边,第i-th条边被删除后,哪两个点不连通(u,v,u<v),若有多解,使得u尽量大的同时v尽量小. 解题过程:拿到题面的第一反应缩点 ...

  2. HDU4612 Warm up 边双连通分量&&桥&&树直径

    题目的意思很简单,给你一个已经连通的无向图,我们知道,图上不同的边连通分量之间有一定数量的桥,题目要求的就是要你再在这个图上加一条边,使得图的桥数目减到最少. 首先要做的就是找出桥,以及每个点所各自代 ...

  3. HDU 3394 双连通分量 桥 Railway

    第一个答案是统计图中桥的个数 如果一个点-双连通分量中边的个数大于点的个数那么这个块中所有的边都是冲突的,累加到第二个答案中去. #include <iostream> #include ...

  4. Tarjan应用:求割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先)【转】【修改】

    一.基本概念: 1.割点:若删掉某点后,原连通图分裂为多个子图,则称该点为割点. 2.割点集合:在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成 ...

  5. 【HDU4612】 双连通分量求桥

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4612 题目大意:给你一个无向图,问你加一条边后最少还剩下多少多少割边. 解题思路:好水的一道模板题.先 ...

  6. (转)Tarjan应用:求割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先)

    基本概念: 1.割点:若删掉某点后,原连通图分裂为多个子图,则称该点为割点. 2.割点集合:在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个 ...

  7. Tarjan算法应用 (割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先)问题)(转载)

    Tarjan算法应用 (割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先)问题)(转载) 转载自:http://hi.baidu.com/lydrainbowcat/blog/item/2 ...

  8. POJ 3177 Redundant Paths (桥,边双连通分量,有重边)

    题意:给一个无向图,问需要补多少条边才可以让整个图变成[边双连通图],即任意两个点对之间的一条路径全垮掉,这两个点对仍可以通过其他路径而互通. 思路:POJ 3352的升级版,听说这个图会给重边.先看 ...

  9. POJ 3352 Road Construction(边双连通分量,桥,tarjan)

    题解转自http://blog.csdn.net/lyy289065406/article/details/6762370   文中部分思路或定义模糊,重写的红色部分为修改过的. 大致题意: 某个企业 ...

  10. hdoj 4612 Warm up【双连通分量求桥&&缩点建新图求树的直径】

    Warm up Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Su ...

随机推荐

  1. xtu summer individual 6 D - Checkposts

    Checkposts Time Limit: 2000ms Memory Limit: 262144KB This problem will be judged on CodeForces. Orig ...

  2. Javascript类型转换的规则全面&附有实例

    Javascript的变量是松散类型的,它可以存储Javascript支持的任何数据类型,其变量的类型可以在运行时被动态改变.请看示例: 1 2 3 var n = 10; n = "hel ...

  3. Codeforces Round #352 (Div. 2),A题与B题题解代码,水过~~

    ->点击<- A. Summer Camp time limit per test 1 second memory limit per test 256 megabytes input s ...

  4. codevs3164 质因数分解

    题目描述 Description (多数据)给出t个数,求出它的质因子个数. 数据没坑,难度降低. 输入描述 Input Description 第一行 t 之后t行 数据 输出描述 Output D ...

  5. poj——3687 Labeling Balls

    Labeling Balls Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14835   Accepted: 4346 D ...

  6. Ubuntu 16.04安装Atom(加强版文本工具)

    安装: sudo add-apt-repository ppa:webupd8team/atom sudo apt-get update sudo apt-get install atom 或者直接上 ...

  7. RabbitMQ集群环境搭建教程收集(待实践)

    先收集,后续再实践. http://www.linuxidc.com/Linux/2016-10/136492.htm http://www.cnblogs.com/lion.net/p/572547 ...

  8. Check ini style config tool

    INI style config is like below [section] # comment key = value Sometimes we want to check the config ...

  9. Serv-u 10.3 的图文安装教程及使用方法

    现在很多windows服务器都是使用serv_u作为ftp服务器,一般情况下我们使用Serv-U FTP Server v6.4.0.6,这里以serv_u 10.3为例介绍下,方便需要的朋友   一 ...

  10. 在ASP.NET Core 中使用Cookie中间件 (.net core 1.x适用)

    在ASP.NET Core 中使用Cookie中间件 ASP.NET Core 提供了Cookie中间件来序列化用户主题到一个加密的Cookie中并且在后来的请求中校验这个Cookie,再现用户并且分 ...