链接:

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的更多相关文章

  1. 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. ...

  2. I - Caocao's Bridges - hdu 4738(求桥)

    题意:曹操的船之间有一些桥连接,现在周瑜想把这些连接的船分成两部分,不过他只能炸毁一座桥,并且每座桥上有士兵看守,问,他最少需要排多少士兵去炸桥如果不能做到,输出‘-1’ 注意:此题有好几个坑,第一个 ...

  3. Caocao's Bridges HDU - 4738 找桥

    题意: 曹操在赤壁之战中被诸葛亮和周瑜打败.但他不会放弃.曹操的军队还是不擅长打水仗,所以他想出了另一个主意.他在长江上建造了许多岛屿,在这些岛屿的基础上,曹操的军队可以轻易地攻击周瑜的军队.曹操还修 ...

  4. HDU 4738 Caocao's Bridges(Tarjan求桥+重边判断)

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

  5. Hdu 4738 Caocao's Bridges (连通图+桥)

    题目链接: Hdu 4738 Caocao's Bridges 题目描述: 有n个岛屿,m个桥,问是否可以去掉一个花费最小的桥,使得岛屿边的不连通? 解题思路: 去掉一个边使得岛屿不连通,那么去掉的这 ...

  6. HDU 4738 Caocao's Bridges (2013杭州网络赛1001题,连通图,求桥)

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

  7. HDU 4738——Caocao's Bridges——————【求割边/桥的最小权值】

     Caocao's Bridges Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  8. HDU 4738 Caocao&#39;s Bridges(找割边)

    HDU 4738 Caocao's Bridges 题目链接 注意几个坑,可能重边,至少要派一个人去炸,没有连通的时候就不用炸了 代码: #include <cstdio> #includ ...

  9. HDU——T 4738 Caocao's Bridges

    http://acm.hdu.edu.cn/showproblem.php?pid=4738 Time Limit: 2000/1000 MS (Java/Others)    Memory Limi ...

随机推荐

  1. tair介绍以及配置

    简介 tair 是淘宝自己开发的一个分布式 key/value 存储引擎. tair 分为持久化和非持久化两种使用方式. 非持久化的 tair 可以看成是一个分布式缓存. 持久化的 tair 将数据存 ...

  2. Delphi 创建一个url网址快捷方式代码

    procedure CreateURLShortcut(const ShortcutFile, URL: string); var F: TextFile; // text file begin {$ ...

  3. js函数中变量声明提前

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  4. C语言高级-结构,共用体,文件,链表

    C语言结构 标准声明方式 struct student{        int age;        char sex;    }; 这个可以在main函数中定义:  struct student ...

  5. new operator

    [new operator] When the code new Foo(...) is executed, the following things happen: A new object is ...

  6. 表单跳转到Struts2

    在使用表单跳转到Struts2时,路径一直不正确. login.html如下: <form action="login.do" method=post> 账号:< ...

  7. hdoj1014 互质

    Uniform Generator Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  8. tf.unstack()、tf.stack()

    tf.unstack 原型: unstack( value, num=None, axis=0, name='unstack' ) 官方解释:https://tensorflow.google.cn/ ...

  9. Winform关于OpenFileDialog的使用方法

    1.OpenFileDialog控件有以下基本属性InitialDirectory 对话框的初始目录Filter 要在对话框中显示的文件筛选器,例如,"文本文件(*.txt)|*.txt|所 ...

  10. memcache简单操作

    <?php $m = new Memcache(); $m->connect('localhost',11211); //获取版本 echo "server's version: ...