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个兵守着,现在要派不少于守桥的士兵数的人去炸桥,只能炸一条桥 ...
随机推荐
- erlang 常用的计算长度函数
1.size 可以计算元祖长度和标准binary长度 2.tuple_size 计算元祖长度 3.length 计算列表长度 4.byte_size 计算标准和非标准binary的长度 非标准 < ...
- NFS挂载故障卡死的问题
NFS挂载故障卡死的问题 默认是硬的,改成软的.比如:mount -t nfs -o rw,vers=4,noacl,nocto,noatime,nodiratime,rsize=131072,wsi ...
- PDO对象
<?php //造DSN:驱动名:dbname=数据库名;host=服务器地址 $dsn = "mysql:dbname=mydb;host=localhost"; //造P ...
- 什么是JDBC?
JDBC是Java数据库连接(Java DataBase Connectivity)技术的简称,提供连接各种常用数据库的能力! 1.方式一(配置文件实现): <!-- 1. 连接池实例 --&g ...
- CSS传统布局之display属性+float属性+position属性
这三个属性是传统网页布局中经常用到的属性. 读这篇文章之前,希望你对css布局模型已经有了一定的了解.因为本文的三个属性是和css三个布局模型紧密联系在一起的.因此,如若你并不了解,我推荐你先看一下c ...
- ios可变数组的所有操作
#pragma mark 创建数组c NSMutableArray * array =[[NSMutableArray alloc] initWithObjects:@"a",@& ...
- [bzoj3196][Tyvj 1730][二逼平衡树] (线段树套treap)
Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排名 2.查询区间内排名为k的值 3.修改某一位值上的数值 4.查询k在 ...
- 浅谈h5移动端页面的适配问题
一.前言 昨天唠叨了哈没用的,今天说点有用的把.先说一下响应式布局吧,我一直认为响应式布局的分项目,一下布局简单得项目做响应式还是可以可以得.例如博客.后台管理系统等.但是有些会认为响应式很牛逼,尤其 ...
- mysql命令行操作 添加字段,修改字段
alter table t_apply change column remarks(原) apply_remarks(目标) varchar(100) default '' c ...
- LeetCode OJ 111. Minimum Depth of Binary Tree
Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shor ...