hdu 4738 Caocao's Bridges(桥的最小权值+去重)
http://acm.hdu.edu.cn/showproblem.php?pid=4738
题目大意:曹操有一些岛屿被桥连接,每座都有士兵把守,周瑜想把这些岛屿分成两部分,但他只能炸毁一条桥,问最少需要派几个士兵去;如果不能完成输出-1
1:如果这些岛屿不连通,则不需要派人前去
2:如果桥的守卫是0的话也得派一人去炸毁
3:如果不能完成输出-1
4:输出最少需派的人数
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<queue>
#include<algorithm>
using namespace std;
#define N 1100
#define INF 0xfffffff int dfn[N], low[N], head[N], f[N];
int Time, m, n, Min, cnt;
struct Edge
{
int next, u, v, c;
} edge[N * N];
void Init()
{
memset(head, -, sizeof(head));
memset(dfn, , sizeof(dfn));
memset(low, , sizeof(low));
memset(f, , sizeof(f));
Time = cnt = ;
} void AddEdge(int u, int v, int c)
{
edge[cnt].u = u;
edge[cnt].v = v;
edge[cnt].c = c;
edge[cnt].next = head[u];
head[u] = cnt++;
} void Tarjan(int u, int fa)
{
int i, v, flag = ;
low[u] = dfn[u] = ++Time;
f[u] = fa;
for(i = head[u] ; i != - ; i = edge[i].next)
{
v = edge[i].v;
if(v == fa && !flag)
{
flag = ;
continue;
}//去重边,如果有重边则跳过
if(!dfn[v])
{
Tarjan(v, u);
low[u] = min(low[u], low[v]);
if(dfn[u] < low[v])
Min = min(Min, edge[i].c);
}
else
low[u] = min(low[u], dfn[v]);
}
} int main()
{
int i, u, v, c, k;
while(scanf("%d%d", &m, &n), m + n)
{
Init();
k = ;
while(n--)
{
scanf("%d%d%d", &u, &v, &c);
AddEdge(u, v, c);
AddEdge(v, u, c);
}
Min = INF;
for(i = ; i <= m ; i++)
{
if(!dfn[i])
{
Tarjan(i, -);
k++;
}
}
if(k > )
{
printf("0\n");
continue;
}//
if(Min == )
printf("1\n");//
else if(Min == INF)
printf("-1\n");//
else
printf("%d\n", Min);//
}
return ;
}
hdu 4738 Caocao's Bridges(桥的最小权值+去重)的更多相关文章
- Hdu 4738 Caocao's Bridges (连通图+桥)
题目链接: Hdu 4738 Caocao's Bridges 题目描述: 有n个岛屿,m个桥,问是否可以去掉一个花费最小的桥,使得岛屿边的不连通? 解题思路: 去掉一个边使得岛屿不连通,那么去掉的这 ...
- hdu 4738 Caocao's Bridges(2013杭州网络赛丶神坑)
就是求最小权值的桥..不过有好几个坑... 1:原图不连通,ans=0. 2: m<=n^2 显然有重边,重边必然不是桥,处理重边直接add(u, v, INF). 3: 最小桥边权为0的时 ...
- hdu 4738 Caocao's Bridges(割边)
题目链接 用tarjan求桥上的最小权值 #include<bits/stdc++.h> #define ll long long int using namespace std; inl ...
- hdu 1853 Cyclic Tour (二分匹配KM最小权值 或 最小费用最大流)
Cyclic Tour Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/65535 K (Java/Others)Total ...
- HDU 1853 Cyclic Tour[有向环最小权值覆盖]
Cyclic Tour Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/65535 K (Java/Others)Total ...
- 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(Tarjan求桥+重边判断)
Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- hdu 4738 Caocao's Bridges (tarjan求桥)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4738 题目大意:给一些点,用一些边把这些点相连,每一条边上有一个权值.现在要你破坏任意一个边(要付出相 ...
- 【HDU 4738 Caocao's Bridges】BCC 找桥
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4738 题意:给定一个n个节点m条边的无向图(可能不连通.有重边),每条边有一个权值.判断其连通性,若双 ...
随机推荐
- ionic中登陆逻辑控制
问题 登陆成功后从login.html调转到home.html,此时在home页面按back键又回到了login.html . 解决方案 登陆成功后,清除导航历史堆栈. 具体代码 menu.html ...
- ASP.NET MVC+EasyUI+Entity FrameWork 整合开发
本文详细讲解怎么用ASP.NET MVC+EasyUI+Entity FrameWork 来开发一个项目 对于ASP.NET MVC的Jscript库,主要引用 <script type=.mi ...
- kthread_stop引起的OOP
1 使用kthread_create创建线程: struct task_struct *kthread_create(int (*threadfn)(void *data), void *da ...
- acdream 1685 多民族王国(DFS,并查集)
Problem Description 娜娜好不容易才回忆起自己是娜娜而不是什么Alice,也回忆起了自己要继续探索这个世界的目标,便偷偷溜出皇宫.娜娜发现这个王国有很多个民族组成,每个民族都有自己的 ...
- C与C++的区别无随时更新
C没有calss类,只有结构体struct class A; 在C中这样写就是错误的,C没有关键字class C的字符指针不会自动开辟内存空间,必须对这个指针指向的地址手动开辟空间后才可以写入数据. ...
- (六)6.10 Neurons Networks implements of softmax regression
softmax可以看做只有输入和输出的Neurons Networks,如下图: 其参数数量为k*(n+1) ,但在本实现中没有加入截距项,所以参数为k*n的矩阵. 对损失函数J(θ)的形式有: 算法 ...
- 【英语】Bingo口语笔记(74) - put系列
- fzu 2128 AC自动机
链接 http://acm.fzu.edu.cn/problem.php?pid=2128 解题方法 首先考虑暴力,,就是拿每一个字符串在匹配串里面找到所有位置,然后从头到尾不断更新最长的合理位 ...
- #define XXX do{...}while(0)
<ol> <li>函数式宏定义的参数没有类型,预处理器只负责做形式上的替换,而不做参数类型检查,所以传参时要格外小心.</li> <li>调用真正函数的 ...
- 【转】如何调整CHM文件中的字体!非常有爱!
原文网址:http://www.cnblogs.com/lijh_ray/archive/2011/01/25/1944668.html 如果html中字体大小是用像素px来定义,那么在IE中无法调整 ...