题意:给你n个点,m条边,边有权值,问你最小的花费使图不连通;

解题思路:就是求边权最小的割边,但这道题有坑点:

1、有重边(桥的两个点有重边时,你去掉一条边并没什么d用);

2、当权值为0的时候,我们也需要放一个人(被这个坑死了0.0);

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#define maxn 1100
#define inf 0x3f3f3f3f
using namespace std;
struct Edge
{
int next;
int to;
int w;
}edge[maxn*maxn*2];
int head[maxn*maxn];
int low[maxn*maxn];
int dfn[maxn*maxn];
int n,m;
int flag;
int minn;
int cnt,step;
int bridge;
void init()
{
memset(head,-1,sizeof(head));
memset(low,0,sizeof(low));
memset(dfn,0,sizeof(dfn));
cnt=0;step=0;bridge=0;flag=0;minn=inf;
}
void add(int u,int v,int w)
{
edge[cnt].next=head[u];
edge[cnt].to=v;
edge[cnt].w=w;
head[u]=cnt++;
}
void tarjan(int u,int fa)
{
dfn[u]=low[u]=++step;
int num=0;
for(int i=head[u];i!=-1;i=edge[i].next)
{
int v=edge[i].to;
if(fa==v&&num==0)
{
num++;
continue;
}
// cout<<v<<endl;
if(!dfn[v])
{
tarjan(v,u);
low[u]=min(low[u],low[v]);
if(low[v]>dfn[u])
{
bridge++;
minn=min(minn,edge[i].w);
}
}
else
low[u]=min(low[u],dfn[v]);
}
}
void solve()
{
int ans=0;
for(int i=1;i<=n;i++)
{
if(!dfn[i])
{
ans++;
tarjan(i,i);
}
}
if(ans>=2)
{
printf("0\n");
return;
}
if(bridge==0)
printf("-1\n");
else
{
if(minn==0)
printf("1\n");
else
printf("%d\n",minn);
}
}
int main()
{
int x,y,w;
while(scanf("%d%d",&n,&m)!=EOF)
{
init();
if(n==0&&m==0)
break;
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&w);
add(x,y,w);
add(y,x,w);
}
solve();
}
return 0;
}

  

hdu-4738(tarjan割边)的更多相关文章

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

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

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

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

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

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

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

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

  5. hdu 4738 Caocao's Bridges (tarjan求桥)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4738 题目大意:给一些点,用一些边把这些点相连,每一条边上有一个权值.现在要你破坏任意一个边(要付出相 ...

  6. (连通图 Tarjan)Caocao's Bridges --HDU --4738

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=4738 题目大意:曹操有很多岛屿,然后呢需要建造一些桥梁将所有的岛屿链接起来,周瑜要做的是就是不让曹操将所 ...

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

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

  8. HDU 4738 割边

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

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

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

  10. HDU 4738 Caocao's Bridges(Tarjan)

    题目链接 #include <iostream> #include <cstring> #include <cstdio> #include <queue&g ...

随机推荐

  1. Java多线程(八)——join()

    一.join()介绍 join() 定义在Thread.java中.join() 的作用:让“主线程”等待“子线程”结束之后才能继续运行.这句话可能有点晦涩,我们还是通过例子去理解: // 主线程 p ...

  2. Java线程安全与锁优化

    线程安全的严谨定义: 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交题执行,也不需要进行额外的同步,或者调用方法进行其他任何操作,调用这个对象的行为都可以或者正确的结果,那么这 ...

  3. 【H5 音乐播放实例】第一节 音乐详情页制作(1)

    本教程是一个H5音乐播放的详情页制作,实现了H5音乐播放,音轨的跳动,已经较为酷炫的UI界面. 通过本教程,您会学到: 1.H5音乐播放 (带音轨) 2.iconfont字体图标库 3.div+css ...

  4. kafka原理和实践(三)spring-kafka生产者源码

    系列目录 kafka原理和实践(一)原理:10分钟入门 kafka原理和实践(二)spring-kafka简单实践 kafka原理和实践(三)spring-kafka生产者源码 kafka原理和实践( ...

  5. vue编程式导航

    vue项目中使用到了组件间传值,通过路由跳转实现从产品页进入产品详情页查看功能. 使用了this.$router.push(编程式导航) product页面中:因为只需要遮住产品列表页来显示产品详情页 ...

  6. Json的生成和解析

    json是常见的数据格式,生成和解析是常用的操作.Android中,默认提供orgJson供我们使用,除此之外,google也提供了Gson库方便我们开发. Json样例类 package com.f ...

  7. CentOS 6.5下RPM方式(重新)安装MySQL 5.7.21从头到尾篇

    强烈推荐参阅这一篇教程  https://www.cnblogs.com/kevingrace/p/8340690.html 下面我写的仅供参考 今天把Mysql5.1升级到了5.7,浪费了一天为了避 ...

  8. python实战案例--银行系统

    stay hungry, stay foolish.求知若饥,虚心若愚. 今天和大家分享一个python的实战案例,很多人在学习过程中都希望通过一些案例来试一下,也给自己一点动力.那么下面介绍一下这次 ...

  9. Intellij Idea 教程

    Intellij Idea 教程 [涵盖安装.配置.常见问题&技巧.Maven.Git.Tomcat.快捷键.项目配置等] 目录 入门............................. ...

  10. 两次console.log打印值不同

    var a=[1,2,3] console.log(a); a[2]=10; console.log(a); // 打印结果 // (3) [1, 2, 3] // (3) [1, 2, 10] // ...