HDU 4738 Caocao's Bridges(割边)
乍一看一个模板题,仔细一看还是模板题,但是三个坑。1,不是连通图,放0个。2 守卫为0,放1个。 3注意重边。
#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
#include<algorithm>
#include<stack>
#include<cstring>
using namespace std;
#define maxn 1005
int head[maxn],dfn[maxn],low[maxn],guard[maxn][maxn],tot,n;
int vis[maxn],all,index,bri[maxn*maxn];
struct Edge
{
int to,nxt,g;
} edge[maxn*maxn*];
queue<int> que;
void bfs(int u)
{
vis[u] = ;
que.push(u);
while(!que.empty())
{
int now = que.front();
que.pop();
for(int i = head[now]; i != -; i = edge[i].nxt)
{
int v = edge[i].to;
if(!vis[v]) {que.push(v);vis[v] = ;}
}
}
}
bool judge()
{
memset(vis,,sizeof(vis));
int sum = ;
while(!que.empty()) que.pop();
for(int i = ; i <= n; i++)
{
if(!vis[i])
{
sum++;
bfs(i);
}
}
if(sum==) return true;
return false;
}
void addedge(int u,int v,int w)
{
edge[tot].to = v;
edge[tot].g = w;
edge[tot].nxt = head[u];
head[u] = tot++;
}
void init()
{
all = index = ;
memset(low,,sizeof(low));
memset(dfn,,sizeof(dfn));
}
void tarjan(int u,int fa)
{
low[u] = dfn[u] = ++index;
for(int i = head[u];i != -;i = edge[i].nxt){
int v = edge[i].to;
if(!dfn[v]){
tarjan(v,u);
low[u] = min(low[u],low[v]);
if(low[v] > dfn[u] && guard[u][v]!=-&&guard[v][u]!=-){
bri[all++] = edge[i].g;
}
}
else if(v != fa) low[u] = min(low[u],dfn[v]);
}
}
int main()
{
int m,a,b,w;
while(~scanf("%d%d",&n,&m))
{
if(n+m == ) break;
memset(head,-,sizeof(head));
tot = ;
memset(guard,-,sizeof(guard));
for(int i = ; i < m; i++)
{
scanf("%d%d%d",&a,&b,&w);
if(guard[a][b]==- && guard[b][a]==-)
{
addedge(a,b,w);
addedge(b,a,w);
guard[a][b] = guard[b][a] = w;
}
else {
guard[a][b] = guard[b][a] = -;
}
}
if(!judge())
{
puts("");
continue;
}
init();
tarjan(,-);
if(all == ){
puts("-1");
continue;
}
sort(bri,bri+all);
if(bri[] == ) puts("");
else printf("%d\n",bri[]);
}
}
HDU 4738 Caocao's Bridges(割边)的更多相关文章
- hdu 4738 Caocao's Bridges(割边)
题目链接 用tarjan求桥上的最小权值 #include<bits/stdc++.h> #define ll long long int using namespace std; inl ...
- Hdu 4738 Caocao's Bridges (连通图+桥)
题目链接: Hdu 4738 Caocao's Bridges 题目描述: 有n个岛屿,m个桥,问是否可以去掉一个花费最小的桥,使得岛屿边的不连通? 解题思路: 去掉一个边使得岛屿不连通,那么去掉的这 ...
- 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 图--桥的判断模板
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: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 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 (2013杭州网络赛1001题,连通图,求桥)
Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 2013杭州网赛 1001 hdu 4738 Caocao's Bridges(双连通分量割边/桥)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4738 题意:有n座岛和m条桥,每条桥上有w个兵守着,现在要派不少于守桥的士兵数的人去炸桥,只能炸一条桥 ...
随机推荐
- LeetCode OJ 53. Maximum Subarray
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
- Excel教程(8) - 财务函数
ACCRINT 用途:返回定期付息有价证券的应计利息. 语法:ACCRINT(issue,first_interest, settlement, rate,par,frequency, basis) ...
- Openjudge-计算概论(A)-奇数单增序列
描述: 给定一个长度为N(不大于500)的正整数序列,请将其中的所有奇数取出,并按升序输出. 输入共2行:第1行为 N:第2行为 N 个正整数,其间用空格间隔.输出增序输出的奇数序列,数据之间以逗号间 ...
- ubuntu下安装UltraEdit
在windows下常年使用UltraEdit来查看log,现在突然切换到ubuntu下,系统自带的Text Editor相当不适应:只有自己安装了. 首先,需要下载安装包,可以去:http://www ...
- 屏幕录像专家2014 v0318 免费版
软件名称: 屏幕录像专家2014软件语言: 简体中文授权方式: 免费试用运行环境: Win8 / Win7 / Vista / WinXP软件大小: 7.9MB图片预览: 软件简介:屏幕录像专家201 ...
- 浅谈 zookeeper 原理,安装和配置
当前云计算流行, 单一机器额的处理能力已经不能满足我们的需求,不得不采用大量的服务集群.服务集群对外提供服务的过程中,有很多的配置需要随时更新,服务间需要协调工作,那么这些信息如何推送到各个节点?并且 ...
- The Accomodation of Students(判断二分图以及求二分图最大匹配)
The Accomodation of Students Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d &a ...
- MFC创建动态链接库DLL并调用方法详解
实例一: 1.创建一个动态链接库工程,如login_dll. 2.在原工程头文件或者新建头文件如showdlg.h定义动态链接库的导出函数,代码如下: #include "stdafx.h& ...
- leetcode415---字符串大数相加
Given two non-negative numbers num1 and num2 represented as string, return the sum of num1 and num2. ...
- SharePoint 2010 应用url参数过滤列表视图数据(应用get办法过滤列表数据)
名人名言:读活书,活读书,读书活.——郭沫若 题目其实不知道如何称呼才干合适大师的搜刮习惯.以便有类似题目经由过程百度或google可以搜刮到,其实就是在url后面添加参数过滤显示我们想要的成果,有人 ...