hdu4738 Caocao's Bridges
http://acm.hdu.edu.cn/showproblem.php?pid=4738
题目大意:曹操赤壁之战大败,于是卷土重来。为了避免水上作战,他在长江上建立了一些岛屿,这样他的士兵就可以在岛屿上攻击到
周瑜的军队。同时,为了更方便各个岛屿的支援与部署,他在一些岛屿之间又修建了一些桥,并且在桥上准备了一些守卫的士兵。周瑜
看到后当然要破坏这些岛屿的连接,然而诸葛亮只给他留下了一个bomb,他如果想要炸毁一座桥需要派出至少和守卫士兵数相等的敢死队
去。问最少需要派出多少人。
很佩服出题人有这么大的脑洞。
很直白的连通图找桥,然后取这些桥中权值(守卫士兵数)最小的即可。可是我太天真了。
WA了9次。呵呵呵呵呵
坑点:
1:可能一开始给出的图根本不是连通图(这也可以),这样岛屿没连接,不用人去, 输出人数是0;
2:输入中含有重复边,就是两个岛屿之间有两座桥。这样明显这两点间的边即使是桥也不算了,耿直的
用数组的直接将权值归为oo即可。或者用邻接表写的标记重边。
3:某桥上的守卫士兵数是0.(一开始把图的权值初始化成0了结果这条边被判成不存在了。。。WA了三次后才发现,初始化为-1才判进去。)
按题面的叙述是0,然而正确的是1。因为bomb至少需要一个人带过去...
附AC代码:
#include <stdio.h>
#include <algorithm>
#include <string.h>
using namespace std;
#define oo 0x3f3f3f3f
int G[][], ans, fa[], dfn[], low[], Time, m, n, nblocks;
void Tarjin(int u, int father)
{
dfn[u] = low[u] = ++Time;
fa[u] = father;
for(int i=; i<=n; i++)
{
if(G[u][i]!=-)
{
if(!dfn[i])
{
Tarjin(i, u);
low[u] = min(low[u], low[i]);
if(low[i]>dfn[u])ans = min(ans, G[u][i]);
}
else if(i!=father)
low[u] = min(low[u], dfn[i]);
}
}
}
int main()
{
while(scanf("%d %d", &n, &m), m+n)
{
int a, b, c;
memset(low, , sizeof(low));
memset(dfn, , sizeof(dfn));
memset(G, -, sizeof(G));
for(int i=; i<=m; i++)
{
scanf("%d %d %d", &a, &b, &c);
if(G[a][b]==-)
G[a][b] = G[b][a] = c;
else G[a][b] = G[b][a] = oo;
}
nblocks = ;
Time = ;
ans = oo;
Tarjin(, -);
int flag = ;
for(int i=; i<=n; i++)
if(!dfn[i])
{
flag = ;
break;
}
if(!flag)
{
printf("0\n");
continue;
}
if(ans==oo)printf("-1\n");
else printf("%d\n", ans==?:ans);
}
return ;
}
hdu4738 Caocao's Bridges的更多相关文章
- hdu-4738.Caocao's Bridges(图中权值最小的桥)
Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU4738:Caocao's Bridges(求桥)
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 题意:曹操赤壁之战后卷土重来,他在n个小岛之间建立了m座桥.现在周瑜只有一颗炮弹,他只能炸毁一座桥使得这些岛屿不再连通.每座桥上都可能会有士兵把手,如果想安放***那 ...
- HDU4738 Caocao's Bridges —— 边双联通分量 + 重边
题目链接:https://vjudge.net/problem/HDU-4738 A network administrator manages a large network. The networ ...
- HDU-4738 Caocao's Bridges 边联通分量
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4738 题意:在有重边的无向图中,求权值最小的桥. 注意trick就好了,ans为0时输出1,总要有一个 ...
- HDU4738 Caocao's Bridges 无向图的桥
一眼题:找所有的桥,然后求最小权值 但是有很多坑点 1:如果本来不联通 输出0,(这个坑我知道) 2:但是还有一个坑,就是当整个连通,最小桥的权值是0时,也必须派一个人去,wa了无数遍(还是太年轻) ...
- HDU4738 Caocao's Bridges【强连通】
题意: 曹操有N个岛,这些岛用M座桥连接起来,每座桥有士兵把守(也可能没有),周瑜想让这N个岛不连通,但只能炸掉一座桥,并且炸掉一座桥需要派出不小于守桥士兵数的人去,桥的守兵数为0时,也需要派出一个人 ...
- hdu 4738 Caocao's Bridges 图--桥的判断模板
Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 4738 Caocao's Bridges(Tarjan求桥+重边判断)
Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
随机推荐
- Sublime Text 3常用快捷键
收集的一些常用快捷键: 选择类 Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本. Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑.举个栗子:快速选中并更 ...
- ASP.NET同页面内【用户控件与父页面】以及【用户控件与用户控件】之间方法调用
在用户控件中,获取父页面的方法 1:方法没有参数(userInfor()) string userInfor = Convert.ToString(this.Page.GetType().GetMet ...
- 通过Java Api与HBase交互(转)
HBase提供了Java Api的访问接口,掌握这个就跟Java应用使用RDBMS时需要JDBC一样重要,本文将继续前两篇文章中blog表的示例,介绍常用的Api. import java.io.IO ...
- 58. N-Queens && N-Queens II
N-Queens The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no tw ...
- Excel—“撤销工作表保护密码”的破解并获取原始密码
您是否遇到过这样的情况:您用Excel编制的报表.表格.程序等,在单元格中设置了公式.函数等,为了防止其他人修改您的设置或者防止您自己无意中修改,您可能会使用Excel的工作表保护功能,但时间久了保护 ...
- 实现Base64加密解密
using System; using System.Text; namespace Common { /// <summary> /// 实现Base64加密解密 /// </ ...
- NSString和NSMutableString的创建及其一些常用方法
NSString和NSMutableString都是对象类型,是NSObject的子类.NSString是不可变字符串,NSMutableString是可变字符串 一.NSString的创建 1.创建 ...
- NHibernate系列文章十:NHibernate对象二级缓存下
摘要 上一节对NHibernate二级缓存做了简单介绍,NHibernate二级缓存是由SessionFactory管理的,所有Session共享.这一节介绍二级缓存其他两个方面:二级缓存查询和二级缓 ...
- SQL笔记-第七章,表连接
SQL中使用JOIN 关键字来使用表连接.表连接有多种不同的类型,被主流数据库系统支持的有交叉连接(CROSS JOIN).内连接(INNER JOIN).外连接(OUTTER JOIN),另外在有的 ...
- redis 问题解决(MISCONF Redis is configured to save RDB snapshots)
(error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on d ...