hdu4738 求割边
细节题:1.如果图不连通,则输出0
2.如果图没有桥,本身是双联通图,则输出-1
3.如果最小的桥权值为0,任然要输出1
#include<bits/stdc++.h>
using namespace std;
#define maxn 1005
#define maxm 1005*1005
struct Edge{int to,nxt,w,cut;}edge[maxm<<];
int n,m,head[maxn],tot,ans; int dfn[maxn],low[maxn],ind;
void tarjan(int u,int in_edge){
dfn[u]=low[u]=++ind;
for(int i=head[u];i!=-;i=edge[i].nxt){
int v=edge[i].to;
if(!dfn[v]){
tarjan(v,i);
low[u]=min(low[u],low[v]); if(low[v]>dfn[u])
ans=min(ans,edge[i].w);
}
else if(i!=(in_edge^))
low[u]=min(low[u],dfn[v]);
}
} void init(){
ind=tot=;
memset(head,-,sizeof head);
memset(dfn,,sizeof dfn);
memset(low,,sizeof low);
}
void addedge(int u,int v,int w){
edge[tot].to=v;
edge[tot].nxt=head[u];
edge[tot].w=w;
head[u]=tot++;
}
int main(){
while(cin>>n>>m,n+m){
init();
while(m--){
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
addedge(u,v,w);
addedge(v,u,w);
} ans=0x3f3f3f3f;
int flag=;
for(int i=;i<=n;i++)
if(!dfn[i])
flag++,tarjan(i,); if(ans==)ans++;
if(flag>)
puts("");
else if(ans==0x3f3f3f3f)
puts("-1");
else printf("%d\n",ans);
}
}
hdu4738 求割边的更多相关文章
- [学习笔记]tarjan求割边
上午打模拟赛的时候想出了第三题题解,可是我不会求割边只能暴力判割边了QAQ 所以,本文介绍求割边(又称桥). 的定义同求有向图强连通分量. 枚举当前点的所有邻接点: 1.如果某个邻接点未被访问过,则访 ...
- 【NOIP训练】【Tarjan求割边】上学
题目描述 给你一张图,询问当删去某一条边时,起点到终点最短路是否改变. 输入格式 第一行输入两个正整数,分别表示点数和边数.第二行输入两个正整数,起点标号为,终点标号为.接下来行,每行三个整数,表示有 ...
- ZOJ 2588 Burning Bridges (tarjan求割边)
题目链接 题意 : N个点M条边,允许有重边,让你求出割边的数目以及每条割边的编号(编号是输入顺序从1到M). 思路 :tarjan求割边,对于除重边以为中生成树的边(u,v),若满足dfn[u] & ...
- ZOJ Problem - 2588 Burning Bridges tarjan算法求割边
题意:求无向图的割边. 思路:tarjan算法求割边,访问到一个点,如果这个点的low值比它的dfn值大,它就是割边,直接ans++(之所以可以直接ans++,是因为他与割点不同,每条边只访问了一遍) ...
- HDU 4738——Caocao's Bridges——————【求割边/桥的最小权值】
Caocao's Bridges Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- POJ3694(求割边)
Network Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 7943 Accepted: 2893 Descripti ...
- tarjan求割边割点
tarjan求割边割点 内容及代码来自http://m.blog.csdn.net/article/details?id=51984469 割边:在连通图中,删除了连通图的某条边后,图不再连通.这样的 ...
- ZOJ 2588 求割边问题
题目链接:http://vjudge.net/problem/viewProblem.action?id=14877 题目大意: 要尽可能多的烧毁桥,另外还要保证图的连通性,问哪些桥是绝对不能烧毁的 ...
- 洛谷P1656 炸铁路 (求割边)
用tarjan变种求割边的模板题 其实还可以求出所有的边双(用栈),但本题不需要求. 1 #include<bits/stdc++.h> 2 using namespace std; 3 ...
随机推荐
- Linux命令之-ps & kill
1.ps:将某个进程显示出来: 常用命令 :ps -ef |grep Java 1)如下为加不加-e参数的区别 2.一般我们查找某个进程的目的就是把它杀掉,使用kill 命令. kill -9 564 ...
- react实现极简搜索框效果
hover.css内容 * { margin:; padding:; } li.hover { background: #ccc; color: darkgreen; } js内容 import Re ...
- mysql 案例 ~超时时间设置
一 简介:今天咱们来谈谈mysql的连接时间与会话关系二 分类 mysql会话分类 1 程序连接session(最主要的) 2 binlog连接session(复制+canal消费) 3 ro ...
- SpringBoot--配置详解
SpringBoot使用了一个全局的配置文件application.properties,放在src/mian/resource目录下或者类路径的/config下.springboot的全局配置文件的 ...
- eclipse常用快捷键和插件
1.快捷键 找实现类 ctrl +T 抽取為方法:alt+shift+M (Method) 方法返回值 ctrl+1 enter 2.在做Java项目的时候如何把第三方的jar包一起打包成jar文件 ...
- Java 进制间的转换
package com.touch.onlinedu; public class Test { public static void main(String[] args) { // 1 : 0001 ...
- ROS 可视化(一): 发布PointCloud2点云数据到Rviz
1. 相关依赖package.xml 需要添加对 pcl_ros 包的依赖 2. CMakeLists.txt find_package(PCL REQUIRED) include_directori ...
- Elasticsearch 5.4.3实战--Java API调用:索引mapping创建
因为项目开发使用的是Java语言, 项目的开发架构是Spring MVC+ maven的jar包管理, 所以今天重点说说ES 5.4.3 的Java API的源码实战 1. pom.xml文件增加依 ...
- 【转】python操作excel表格(xlrd/xlwt)
[转]python操作excel表格(xlrd/xlwt) 最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异, ...
- k64 datasheet学习笔记35---Analog-to-Digital Converter (ADC)
0.前言 本文主要介绍K64的ADC部分的特性,内部架构,信号描述及操作接口等 1.简介 1.1.ADC模块特性 线性逐次逼近算法,达16bit分辨率 达到4对差分和24个单端模拟量输入 输出模式 差 ...