HDU 4738 Caocao's Bridges taijan (求割边,神坑)
神坑题。这题的坑点有1.判断连通,2.有重边,3.至少要有一个人背炸药
因为有重边,tarjan的时候不能用子结点和父节点来判断是不是树边的二次访问,所以我的采用用前向星存边编号的奇偶性关系,用^1来判断是不是树边
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxe = 1000005<<1;
const int maxv = 1005;
int clock;
int dfn[maxv],low[maxv],ecnt;
int head[maxv],nxt[maxe],to[maxe],wei[maxe]; void init()
{
clock = ecnt = 0;
memset(head,-1,sizeof(head));
memset(dfn,0,sizeof(dfn));
} void addEdge(int u,int v,int w)
{
to[ecnt] = v;
wei[ecnt] = w;
nxt[ecnt] = head[u];
head[u] = ecnt++;
} int ans; void tarjan(int u,int fa)
{
dfn[u] = low[u] = ++clock;
for(int i = head[u]; ~i ; i = nxt[i]){
int v = to[i];
if(i == (fa^1)) continue;
if(!dfn[v]){
tarjan(v,i);
low[u] = min(low[u],low[v]);
if(low[v] > dfn[u]){
ans = min(ans,wei[i]);
}
}else {
low[u] = min(low[u],dfn[v]);
}
}
} int sum;
bool vis[maxv];
void dfs(int u){
if(vis[u]) return;
sum++;
vis[u] = 1;
for(int i = head[u]; ~i ; i = nxt[i]){
dfs(to[i]);
}
}
const int INF = 1e9;
int main()
{
int N,M;
while(~scanf("%d%d",&N,&M)&&N){
init();
for(int i = 0; i < M; i++){
int U,V,W;
scanf("%d%d%d",&U,&V,&W);
addEdge(U,V,W);
addEdge(V,U,W);
}
memset(vis,0,sizeof(vis));
sum = 0;
dfs(1);
if(sum < N) { printf("0\n"); continue; }
ans = INF;
tarjan(1,-1);
if(ans == INF) { printf("-1\n"); continue; }
ans = max(ans,1);
printf("%d\n",ans);
}
return 0;
}
HDU 4738 Caocao's Bridges taijan (求割边,神坑)的更多相关文章
- 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求桥)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4738 题目大意:给一些点,用一些边把这些点相连,每一条边上有一个权值.现在要你破坏任意一个边(要付出相 ...
- 2013杭州网赛 1001 hdu 4738 Caocao's Bridges(双连通分量割边/桥)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4738 题意:有n座岛和m条桥,每条桥上有w个兵守着,现在要派不少于守桥的士兵数的人去炸桥,只能炸一条桥 ...
- Hdu 4738 Caocao's Bridges (连通图+桥)
题目链接: Hdu 4738 Caocao's Bridges 题目描述: 有n个岛屿,m个桥,问是否可以去掉一个花费最小的桥,使得岛屿边的不连通? 解题思路: 去掉一个边使得岛屿不连通,那么去掉的这 ...
- 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 (2013杭州网络赛1001题,连通图,求桥)
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) ...
随机推荐
- sqlserver2012——XML查询
1. CREATE TABLE STUDENT { S_ID INT, S_DATA xml } INSERT INTO STUDENT VALUES { 1, '<学生信息><姓名 ...
- 数据库路由中间件MyCat - 源代码篇(9)
此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 3. 连接模块 3.5 后端连接 3.5.1 后端连接获取与负载均衡 上一节我们讲了后端连接的基本建立和响应 ...
- ansible无网络安装openstack(Newton)
概要 apt使用本地源,pip使用本地源 网络环境 物理机环境 网络名 网络地址 VLAN br-ex 192.168.200.250/24 90 br-mgmt 92.0.0.100/24 92 a ...
- 在element-ui的表格组件中为表头添加Tooltip 文字提示
在使用表格组件的时候经常遇到的问题,列数很多,而表头的文字描述长度很长 <el-table-column v-if="!column.event" v-for="( ...
- IT 面试题
1.JDK1.X新增的功能 ==>>> 2.字符流和字节流的区别,使用场景,相关类 ==>>> 字节流与字符流 在Java.io包中操作文件内容的主要有两大 ...
- 爬虫之scapy
一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可 ...
- IDEA 小技巧之书签与收藏
原文地址:IDEA 小技巧之书签与收藏 最近翻阅 Spring 源码,由于源码调用链路很长,等看了十几类方法之后,想看前面调用方法就很不方便,需要查找历史的查看记录.还有时候看着看着就忘了中间某个方法 ...
- loj2734「JOISC 2016 Day 2」女装大佬 || 洛谷P3615 如厕计划
loj2734 洛谷P3615 http://218.5.5.242:9021/problem/185 不会做... 题解(来自ditoly): 这一步更详细的解释(来自kkksc03): 还是从后面 ...
- php:一个题目,关于优先级,及$a++和$a=$a+1,
这几天常看到微博上转发的一条微博:就做了下,竟做错了,所以就试着分析了下~~ 这是微博: 这是代码: <?php $c = 3; $b = 6; if ($c = 4 || $b = 4) { ...
- Net Core2.0 基于QuartzNet任务管理系统
Net Core2.0 基于QuartzNet任务管理系统 Quartz.NET官网地址:https://www.quartz-scheduler.net/ Quartz.NET文档地址:https: ...