(连通图 Tarjan)Caocao's Bridges --HDU --4738
链接:
http://acm.hdu.edu.cn/showproblem.php?pid=4738
题目大意:
曹操有很多岛屿,然后呢需要建造一些桥梁将所有的岛屿链接起来,周瑜要做的是就是不让曹操将所有岛屿连接起来,每个座桥有人在守卫, 周瑜只能炸一座桥,并且他派人去炸桥只能派的人数必须 大于等于守桥的人数。
输出最小的炸桥人数, 要是没有答案就输出 -1
代码:
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <vector>
using namespace std;
#define INF 0x7ffffff
#define N 100005
typedef long long LL; struct node
{
int e, w;
node (int e=, int w=):e(e),w(w){}
};
int low[N], dfn[N], Time, n, m;
int f[N];
int bri[N]; vector < vector <node> > G; void Init()
{
memset(dfn, , sizeof(dfn));
memset(low, , sizeof(low));
memset(f, , sizeof(f));
memset(bri, -, sizeof(bri));
Time = ;
G.clear();
G.resize(n+);
}
void Tarjan(int u, int fa)
{
low[u] = dfn[u] = ++Time;
f[u] = fa; int len = G[u].size(), k = ;
node v; for(int i=; i<len; i++)
{
v = G[u][i];
if(!k && v.e==fa)
{
k++;
continue;
}
if(!low[v.e])
{
Tarjan(v.e, u);
low[u] = min(low[u], low[v.e]);
}
else
low[u] = min(low[u], dfn[v.e]); if(dfn[u] < low[v.e])
bri[v.e] = v.w;
if(k== && bri[v.e]!=-)
bri[v.e] = -;
}
}
void Slove()
{
int ans = INF, i; Tarjan(, );
for(i=; i<=n; i++)
{
if(!low[i])
break;
}
if(i!=n+)
{
puts("");
return ;
} for(i=; i<=n; i++)
{
if(bri[i]!=-)
ans = min(ans, bri[i]);
} if(ans==)
ans ++;
if(ans==INF)
ans = -;
printf("%d\n", ans);
} int main()
{
while(scanf("%d%d", &n, &m), m+n)
{
Init();
for(int i=; i<m; i++)
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
G[a].push_back(node(b,c));
G[b].push_back(node(a,c));
}
Slove();
}
return ;
}
(连通图 Tarjan)Caocao's Bridges --HDU --4738的更多相关文章
- Caocao's Bridges HDU - 4738 求桥
题目描述 Caocao was defeated by Zhuge Liang and Zhou Yu in the battle of Chibi. But he wouldn't give up. ...
- I - Caocao's Bridges - hdu 4738(求桥)
题意:曹操的船之间有一些桥连接,现在周瑜想把这些连接的船分成两部分,不过他只能炸毁一座桥,并且每座桥上有士兵看守,问,他最少需要排多少士兵去炸桥如果不能做到,输出‘-1’ 注意:此题有好几个坑,第一个 ...
- Caocao's Bridges HDU - 4738 找桥
题意: 曹操在赤壁之战中被诸葛亮和周瑜打败.但他不会放弃.曹操的军队还是不擅长打水仗,所以他想出了另一个主意.他在长江上建造了许多岛屿,在这些岛屿的基础上,曹操的军队可以轻易地攻击周瑜的军队.曹操还修 ...
- HDU 4738 Caocao's Bridges(Tarjan求桥+重边判断)
Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- Hdu 4738 Caocao's Bridges (连通图+桥)
题目链接: Hdu 4738 Caocao's Bridges 题目描述: 有n个岛屿,m个桥,问是否可以去掉一个花费最小的桥,使得岛屿边的不连通? 解题思路: 去掉一个边使得岛屿不连通,那么去掉的这 ...
- HDU 4738 Caocao's Bridges (2013杭州网络赛1001题,连通图,求桥)
Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 4738——Caocao's Bridges——————【求割边/桥的最小权值】
Caocao's Bridges Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- HDU 4738 Caocao's Bridges(找割边)
HDU 4738 Caocao's Bridges 题目链接 注意几个坑,可能重边,至少要派一个人去炸,没有连通的时候就不用炸了 代码: #include <cstdio> #includ ...
- HDU——T 4738 Caocao's Bridges
http://acm.hdu.edu.cn/showproblem.php?pid=4738 Time Limit: 2000/1000 MS (Java/Others) Memory Limi ...
随机推荐
- Jquery detect page refresh
first thing there are 3 functions we will use: function setCookie(c_name, value, exdays) { ...
- SWFUpload乱码问题的解决
目前比较流行的是使用SWFUpload控件,这个控件的详细介绍可以参见官网http://demo.swfupload.org/v220/index.htm 在使用这个控件批量上传文件时发现中文文件名都 ...
- servlet第三篇
Servlet是一个供其他Java程序(Servlet引擎)调用的Java类,它不能独立运行,它的运行完全由Servlet引擎来控制和调度. 针对客户端的多次Servlet请求,通常情况下,服务器只会 ...
- MIUI 6的毛玻璃效果的技术实现(实时模糊)
说说MIUI 6的毛玻璃效果的技术实现. 很久以前我们的文件夹打开和最近任务等几个地方就使用了毛玻璃效果,在技术上讲就是背景模糊.应该是比iOS 7的使用要早很多.不过那时候我们使用的是先对背景截 ...
- hive 显示分区
显示某一张表的分区值 show partitions table_name;
- Java http请求和调用(二)
http请求代码 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader ...
- C++中的浅拷贝和深拷贝
浅拷贝(shallow copy)与深拷贝(deep copy)对于值拷贝的处理相同,都是创建新对象,但对于引用拷贝的处理不同,深拷贝将会重新创建新对象,返回新对象的引用字.浅拷贝不会创建新引用类型. ...
- JS 图片切换
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="zzzz.aspx.cs&quo ...
- Spring框架之什么是IOC的功能?
1. 什么是IOC的功能? * IoC -- Inverse of Control,控制反转,将对象的创建权反转给Spring!! * 使用IOC可以解决的程序耦合性高的问题!!
- Java的8种包装类:Wrapper Class
Java有8种基本数据类型,为什么又要出现对应的8种包装类: 1.Java的8种基本数据类型不支持面向对象编程机制 2.8种基本数据类型不具备“对象”的特性:没有成员变量.方法可供调用 3.例如:某个 ...