HDU 4738 割边
Caocao's Bridges
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 8322 Accepted Submission(s): 2557
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.
解析 无向图求割边,输出权值最下的割边的边权,不连通直接为0,权值等于0,则至少派一个人去炸桥,输出1
AC代码
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std; const int maxn = 1e5 + ,inf = 0x3f3f3f3f; struct node
{
int v, w, next;
} edge[maxn << ]; int bridge[maxn];
int low[maxn], dfn[maxn], vis[maxn];
int head[maxn],tot, sol, num; void init(void)
{
memset(head, -, sizeof(head));
memset(dfn, , sizeof(dfn));
memset(bridge, , sizeof(bridge));
num = sol = tot = ;
} void addedge(int u, int v,int w)
{
edge[tot].v = v;
edge[tot].w = w;
edge[tot].next = head[u];
head[u] = tot++;
} void tarjan(int u,int fa)
{
dfn[u] = low[u] = ++num;
int pre_num=;
for(int i = head[u]; i != -; i = edge[i].next)
{
int v = edge[i].v;
if(v==fa&&pre_num==)
{
pre_num++;
continue;
}
if(!dfn[v])
{
tarjan(v,u);
low[u] = min(low[u], low[v]);
if(dfn[u] < low[v])
{
bridge[sol++]=edge[i].w;
}
}
else
{
low[u] = min(low[u], dfn[v]);
}
}
} int main()
{
int n, m, x, y, z;
while(~scanf("%d%d", &n, &m))
{
if(!n && !m)
break;
init();
for(int i = ; i < m; i++)
{
scanf("%d%d%d", &x, &y, &z);
addedge(x, y, z);
addedge(y, x, z);
}
tarjan(,);
int flag=;
for(int i=; i<=n; i++)
if(!dfn[i])
{
flag=;
break;
}
if(flag)
{
printf("0\n");
continue;
}
int minn=inf;
for(int i=; i<sol; i++)
minn=min(minn,bridge[i]);
if(minn==)minn++;
if(minn==inf)
printf("-1\n");
else
printf("%d\n",minn);
}
return ;
}
HDU 4738 割边的更多相关文章
- 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 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个桥,问是否可以去掉一个花费最小的桥,使得岛屿边的不连通? 解题思路: 去掉一个边使得岛屿不连通,那么去掉的这 ...
- 2013杭州网赛 1001 hdu 4738 Caocao's Bridges(双连通分量割边/桥)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4738 题意:有n座岛和m条桥,每条桥上有w个兵守着,现在要派不少于守桥的士兵数的人去炸桥,只能炸一条桥 ...
- Hdu 4738【tanjan求无向图的桥】割边判定定理 dfn[x] < low[y]
题目: 曹操在长江上建立了一些点,点之间有一些边连着.如果这些点构成的无向图变成了连通图,那么曹操就无敌了.刘备为了防止曹操变得无敌,就打算去摧毁连接曹操的点的桥.但是诸葛亮把所有炸弹都带走了,只留下 ...
- HDU 4738 Caocao's Bridges(割边)
乍一看一个模板题,仔细一看还是模板题,但是三个坑.1,不是连通图,放0个.2 守卫为0,放1个. 3注意重边. #include<iostream> #include<cstdio& ...
- HDU 4738 Caocao's Bridges taijan (求割边,神坑)
神坑题.这题的坑点有1.判断连通,2.有重边,3.至少要有一个人背*** 因为有重边,tarjan的时候不能用子结点和父节点来判断是不是树边的二次访问,所以我的采用用前向星存边编号的奇偶性关系,用^1 ...
- hdu 4738 Caocao's Bridges(割边)
题目链接 用tarjan求桥上的最小权值 #include<bits/stdc++.h> #define ll long long int using namespace std; inl ...
随机推荐
- C# 移动开发 MasterDetailPage 关闭时报错问题
至上次发表的 MasterDetailPage界面做主App,折腾10天,终于知道问题所在.. 泪奔的是解决这个问题只要一句代码 在MainActivity.cs里 [Activity(Label = ...
- 用JS获取Html中所有图片文件流然后替换原有链接
function displayHtmlWithImageStream(bodyHtml) { var imgReg = /<img.*?(?:>|\/>)/gi; var arr ...
- jQuery ajax参数后台获取不到的问题
<script type="text/javascript"> init(); var alldate = {a : "0",b:"1&q ...
- Python 学习日志9月21日
9月21日 周四 今天是个特殊的日子吗,总感觉9月21这个日子听着怪怪的. 今天早晨看<Head First HTML and CSS>第13章节“表格和更多列表”,内容不多,看完并做了详 ...
- saltstack 源码安装
面向对象编程(oop) 面向对象: 面向对象三大特性: 封装 继承 多肽封装: 封装就是将具体的客观事物封装成抽象的类.并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可行的进行信息隐藏继承 ...
- zabbix 报警通知选项配置
{TRIGGER.STATUS} host: {HOSTNAME} IP: {HOST.IP} events_time:{EVENT.DATE} {EVENT.TIME} notice_time:{D ...
- html upload_file 对象(2018/02/26)工作收获
php.ini中可以设置上传文件的大小,如果超过设置大小,上传失败.$_File 数组当中接受到的文件对象size为0
- H5里div多行显示省略号
display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: ; overflow: hidden; -webkit- ...
- 普通用户切换到root用户
普通用户切换到root用户首先按组合键 CTRL+ALT+T 进入终端界面,一般终端界面默认为普通用户权限模式,如何从普通用户进入root用户首先重置root密码输入 sudo passwd root ...
- L2-2 社交集群 (25 分)(一个写挫的并查集)
题目: 思路: 就是一个并查集的裸题,不过在数据查找方面可能不好处理,暴力完全可以解决这个问题啊!! #include <bits/stdc++.h> #include <cstdi ...