hdu4738(边双连通分量,桥)
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
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.
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.
Zhou Yu had to send to complete the mission. If Zhou Yu couldn't succeed any
way, print -1 instead.
1 2 7
2 3 4
3 1 4
3 2
1 2 7
2 3 4
0 0
4
- /*
- 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(边双连通分量,桥)的更多相关文章
- Graph_Master(连通分量_A_双连通分量+桥)
hdu 5409 题目大意:给出一张简单图,求对应输入的m条边,第i-th条边被删除后,哪两个点不连通(u,v,u<v),若有多解,使得u尽量大的同时v尽量小. 解题过程:拿到题面的第一反应缩点 ...
- HDU4612 Warm up 边双连通分量&&桥&&树直径
题目的意思很简单,给你一个已经连通的无向图,我们知道,图上不同的边连通分量之间有一定数量的桥,题目要求的就是要你再在这个图上加一条边,使得图的桥数目减到最少. 首先要做的就是找出桥,以及每个点所各自代 ...
- HDU 3394 双连通分量 桥 Railway
第一个答案是统计图中桥的个数 如果一个点-双连通分量中边的个数大于点的个数那么这个块中所有的边都是冲突的,累加到第二个答案中去. #include <iostream> #include ...
- Tarjan应用:求割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先)【转】【修改】
一.基本概念: 1.割点:若删掉某点后,原连通图分裂为多个子图,则称该点为割点. 2.割点集合:在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成 ...
- 【HDU4612】 双连通分量求桥
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4612 题目大意:给你一个无向图,问你加一条边后最少还剩下多少多少割边. 解题思路:好水的一道模板题.先 ...
- (转)Tarjan应用:求割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先)
基本概念: 1.割点:若删掉某点后,原连通图分裂为多个子图,则称该点为割点. 2.割点集合:在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个 ...
- Tarjan算法应用 (割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先)问题)(转载)
Tarjan算法应用 (割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先)问题)(转载) 转载自:http://hi.baidu.com/lydrainbowcat/blog/item/2 ...
- POJ 3177 Redundant Paths (桥,边双连通分量,有重边)
题意:给一个无向图,问需要补多少条边才可以让整个图变成[边双连通图],即任意两个点对之间的一条路径全垮掉,这两个点对仍可以通过其他路径而互通. 思路:POJ 3352的升级版,听说这个图会给重边.先看 ...
- POJ 3352 Road Construction(边双连通分量,桥,tarjan)
题解转自http://blog.csdn.net/lyy289065406/article/details/6762370 文中部分思路或定义模糊,重写的红色部分为修改过的. 大致题意: 某个企业 ...
- hdoj 4612 Warm up【双连通分量求桥&&缩点建新图求树的直径】
Warm up Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Su ...
随机推荐
- VS2015 scanf用不了
#define _CRT_SECURE_NO_DEPRECATE
- Python文件处理(txt、csv文件读取)
打开文件 使用Python内置的方法 open()可以打开文件 file object = open(file_name [, access_mode][, buffering]) file_name ...
- POJ 2686_Traveling by Stagecoach【状态压缩DP】
题意: 一共有m个城市,城市之间有双向路连接,一个人有n张马车票,一张马车票只能走一条路,走一条路的时间为这条路的长度除以使用的马车票上规定的马车数,问这个人从a出发到b最少使用时间. 分析: 状态压 ...
- JSP的体系结构
以下内容引用自http://wiki.jikexueyuan.com/project/jsp/architecture.html: Web服务器需要一个JSP引擎,即处理JSP页面的容器.JSP容器负 ...
- 一步步搭建java信息管理系统00 - 前言
开发前,先上效果图吧 信息管理系统,个人认为,以下几个因素是不可缺少的 多tab 因菜单比较多,右侧的树形一定要考虑,如果菜单还是多,那么顶部就要考虑起来了 以后想到什么,再添加吧. 看到easyui ...
- Linux MariaDB 遗忘密码后重置密码
Linux MariaDB 遗忘密码后重置密码 MariaDB 是 MySQL 的一个分支数据库.处理的办法和 MySQL 相同. 修改 MySQL 配置文件 在 [mysqld] 追加配置项: [r ...
- SVN 资源权限管理系统 SVNAdmin
原文:https://www.oschina.net/p/svn-admin
- APPLE STORE
直接在设置中,使用查看APPLE ID是无法更改的,现在必须要有所在区域的信用卡信息,支付方式无法像以前一样选择“无”. 查询后发现,有人说icloud3.0,即这个旧版的可以进行更改,于是下载. 但 ...
- FlashChart json数据配置 中文文档
http://www.riaos.com/ria/2274 FlashChart json数据配置说明 有朋友要用flashchart,感觉这个还不错.就整理了一份文档. 基本包括了所有json配置的 ...
- Spring MVC的简单使用方法
一.Multiaction Controller package cn.framelife.mvc.control; import org.springframework.stereotype.Con ...