http://acm.hdu.edu.cn/showproblem.php?pid=4738

  求得是边权最小的割边,和求割点类似用tarjin,但要注意的是不能走从父亲过来的那一条边,在割点里那样理解没错但放在求割边就不对了,因为割点一旦被除去相邻的边就都没了。割边却只能除去一条边。当low[v]>dfn[u]说明当前的边是割边,相等的时候不是,因为割去(u,v)之后(u,v)之间还有另外的边存在。

  此外如果不是连通图直接输出0,如果答案是0要输出1,因为要有人去炸桥。

  

 #include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
#define LL long long
#define pb push_back
#define pii pair<int,int>
#define mp make_pair
const int maxn=;
struct Edge{
int v,w,next;
}e[];
int first[maxn],tot;
void add(int u,int v,int w){
e[tot].v=v;
e[tot].w=w;
e[tot].next=first[u];
first[u]=tot++;
}
int dfn[maxn],low[maxn],root,sum,ans;
bool vis[maxn];
void dfs(int u,int last){
dfn[u]=low[u]=sum++;
vis[u]=;
int son=;
for(int i=first[u];i!=-;i=e[i].next){
int v=e[i].v,w=e[i].w;
if(i==(^last)) continue;
if(vis[v]){
low[u]=min(low[u],dfn[v]);
}
else{
dfs(v,i);
low[u]=min(low[u],low[v]);
if(low[v]>dfn[u]){
ans=min(ans,w);
}
}
}
}
int main(){
int n,m,i,j,u,v,w;
while(cin>>n>>m){
if(n==&&m==) break;
tot=;
memset(first,-,sizeof(first));
while(m--){
scanf("%d%d%d",&u,&v,&w);
add(u,v,w),add(v,u,w);
}
sum=;
ans=;
memset(vis,,sizeof(vis));
int p=;
for(i=;i<=n;++i){
if(!vis[i]){
p++;
root=i;
dfs(i,-);
}
}
if(p>){
cout<<<<endl;
continue;
}
/*for(i=1;i<=n;++i){
cout<<dfn[i]<<' '<<low[i]<<endl;
}*/
if(ans==) ans=-;
if(ans==)ans=;
cout<<ans<<endl;
}
return ;
}

hdu-4738-tarjin/割边的更多相关文章

  1. HDU 4738——Caocao's Bridges——————【求割边/桥的最小权值】

     Caocao's Bridges Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  2. HDU 4738 Caocao&#39;s Bridges(找割边)

    HDU 4738 Caocao's Bridges 题目链接 注意几个坑,可能重边,至少要派一个人去炸,没有连通的时候就不用炸了 代码: #include <cstdio> #includ ...

  3. HDU 4738 Caocao's Bridges(Tarjan求桥+重边判断)

    Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  4. Hdu 4738 Caocao's Bridges (连通图+桥)

    题目链接: Hdu 4738 Caocao's Bridges 题目描述: 有n个岛屿,m个桥,问是否可以去掉一个花费最小的桥,使得岛屿边的不连通? 解题思路: 去掉一个边使得岛屿不连通,那么去掉的这 ...

  5. 2013杭州网赛 1001 hdu 4738 Caocao's Bridges(双连通分量割边/桥)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4738 题意:有n座岛和m条桥,每条桥上有w个兵守着,现在要派不少于守桥的士兵数的人去炸桥,只能炸一条桥 ...

  6. HDU 4738 割边

    Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  7. Hdu 4738【tanjan求无向图的桥】割边判定定理 dfn[x] < low[y]

    题目: 曹操在长江上建立了一些点,点之间有一些边连着.如果这些点构成的无向图变成了连通图,那么曹操就无敌了.刘备为了防止曹操变得无敌,就打算去摧毁连接曹操的点的桥.但是诸葛亮把所有炸弹都带走了,只留下 ...

  8. HDU 4738 Caocao's Bridges(割边)

    乍一看一个模板题,仔细一看还是模板题,但是三个坑.1,不是连通图,放0个.2 守卫为0,放1个. 3注意重边. #include<iostream> #include<cstdio& ...

  9. HDU 4738 Caocao's Bridges taijan (求割边,神坑)

    神坑题.这题的坑点有1.判断连通,2.有重边,3.至少要有一个人背*** 因为有重边,tarjan的时候不能用子结点和父节点来判断是不是树边的二次访问,所以我的采用用前向星存边编号的奇偶性关系,用^1 ...

  10. hdu 4738 Caocao's Bridges(割边)

    题目链接 用tarjan求桥上的最小权值 #include<bits/stdc++.h> #define ll long long int using namespace std; inl ...

随机推荐

  1. Shiro学习笔记五(Shiro标签,及通配符)

    1.首先是导入标签库 <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> ...

  2. 【ASP.NET】The CodeDom provider type “Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider” could not be located

    一般是asp.net的项目在启动的时候会报这个错误. 页面显示成: 我推测的原因是由于project的build的输出属性改了, 非bin目录下, 导致这个问题. 解决这个问题的方案有两个: 1. 改 ...

  3. [0403]学习一个——苟(简单Java开发)

    学习一个--苟 1. 开发目的 拜读了某神犇的blog,感到了自身深深的不足.蒟蒻如我,决定提高一蛤自身的姿势水平,学习一个,使用Java重写用GreatestLanguage写的某小说网站的抓取器. ...

  4. Jmeter工具

    开源,纯java,用于HTTP协议性能测试,接口协议测试工具,自动化测试工具 功能测试角度: 1.支持多种不同类型的协议.接口协议有多种 2.可以全面支持HTTP协议(后台交互) 3.其他非直接支持的 ...

  5. python3使用pymysql模块,连接mysql数据库,实现新增、查询和更新操作

    1.环境数据准备: python3环境.pymysql模块 mysql数据库:本次代码中用到的数据库为本地的testdb数据库,user表(表字段比较简单,只有主键id,手机号mobile,密码pas ...

  6. Activity回传值报错:Failure delivering result ResultInfo{who=null,request=7,result = 0,data=null}

    Activity  A   -----值------->  Activity  B   -----值----->  Activity  A     场景:当A跳转到B,再从B直接点击返回按 ...

  7. 学习笔记28—Python 不同数据类型取值方法

    1.array数据类型 1)-------> y[i,] 或者 y[i] 2.遍历目录下所有文件夹: def eachFile(filepath):     pathDir =  os.list ...

  8. QT文件(夹)操作---QFile、QDir、QFileInfo、QTextStream和QDataStream异同

    1.1    文件和目录 QFile.QBuffer和QTcpSocket可支持读写设备,用open函数打开,用write或putChar函数写入.用read和readLine或readAll进行读取 ...

  9. 雷林鹏分享:jQuery EasyUI 树形菜单 - 使用标记创建树形菜单

    jQuery EasyUI 树形菜单 - 使用标记创建树形菜单 一个树形菜单(Tree)可以从标记创建.easyui 树形菜单(Tree)也可以定义在 元素中.无序列表的 元素提供一个基础的树(Tre ...

  10. 雷林鹏分享:C# 结构(Struct)

    C# 结构(Struct) 在 C# 中,结构是值类型数据结构.它使得一个单一变量可以存储各种数据类型的相关数据.struct 关键字用于创建结构. 结构是用来代表一个记录.假设您想跟踪图书馆中书的动 ...