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 不允许多线程共享sqlite句柄
参考链接: http://blog.csdn.net/liangzhao_jay/article/details/45642085 sqlite3采用文件锁,效率过低. sqlite3采用的3种线程模 ...
- 《一头扎进SpringMvc视频教程》Rest风格的资源URL
5.@PathVariable和@RequestParam的区别 请求路径上有个id的变量值,可以通过@PathVariable来获取 @RequestMapping(value = "/ ...
- 找出程序GasMileage中的哪一行与下列叙述相对应:
找出程序GasMileage中的哪一行与下列叙述相对应: a.通知程序将使用Scanner类 import java.util.Scannner; b.创建一个Scanner类的对象 Scan ...
- 阿里云IoT物联网平台入门教程
参考链接:https://www.geek-workshop.com/thread-37883-1-1.html
- 【NLP CS224N笔记】Lecture 1 - Introduction of NLP
I. 什么是NLP NLP全称是Natural Language Processing,即自然语言处理,这是一门计算机科学.人工智能以及语言学的交叉学科. NLP涉及的几个层次由下图所示.可以看到输入 ...
- css3 特效拓展 画个安卓机器人
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 使用PHP、MySQL实现修改密码 + 防止通过url强行进入系统
●使用PHP+MySQL实现修改密码 页面: index.php 登陆页面,输入默认密码登陆系统 check.php 核查页面,通过查询数据库检测密码是否正确 ——> 正确,则进入系统 ...
- backgroud-size属性
backgroud-size:100% 改为:backgroud-size:100% 100%; 就能解决下面的问题.
- CentOS6.6 双网卡双网关配置
1.需求: 内网IP:10.63.215.7 网关:10.63.215.254 外网IP:180.168.29.92 网关:180.168.29.89 内外网均可以Ping通,可直接访问 2.IP配置 ...
- 拿什么守护你的Node.JS进程: Node出错崩溃了怎么办?
被吐嘈的NodeJS的异常处理 许多人都有这样一种映像,NodeJS比较快: 但是因为其是单线程,所以它不稳定,有点不安全,不适合处理复杂业务: 它比较适合对并发要求比较高,而且简单的业务场景. 在E ...