题目链接:

  Hdu 4738 Caocao's Bridges

题目描述:

  有n个岛屿,m个桥,问是否可以去掉一个花费最小的桥,使得岛屿边的不连通?

解题思路:

  去掉一个边使得岛屿不连通,那么去掉的这个边一定是一个桥,所以我们只需要求出来所有的桥,然后比较每个桥的花费,选取最小的那个就好。

看起来很简单的样子哦!但是这个题目有很多的细节:

  A:题目中有重边,以后写Tarjan还是清一色判断重边吧。(除非题目特别要求)

  B:m个桥有可能连通不了这n个桥,这个时候不需要花费。

  C:当最小花费桥的花费是0的话,应该输出1。

 #include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; typedef long long LL;
const int maxn = ;
const int INF = 0x3f3f3f3f;
struct node
{
int to, next, num;
} edge[maxn*maxn];
int head[maxn], low[maxn], dfn[maxn], stack[maxn];
int id[maxn], cnt, tot, top, ntime; void init ()
{
cnt = tot = top = ntime = ;
memset (id, , sizeof(id));
memset (low, , sizeof(low));
memset (dfn, , sizeof(dfn));
memset (head, -, sizeof(head));
memset (stack, , sizeof(stack));
}
void Add (int from, int to, int num)
{
edge[tot].to = to;
edge[tot].num = num;
edge[tot].next = head[from];
head[from] = tot ++;
}
void Tarjan (int u, int father)
{
int k = ;
low[u] = dfn[u] = ++ntime;
stack[top++] = u;
for (int i=head[u]; i!=-; i=edge[i].next)
{
int v = edge[i].to;
if (v == father && !k)
{
k ++;
continue;
}
if (!dfn[v])
{
Tarjan (v, u);
low[u] = min (low[u], low[v]);
}
else
low[u] = min (low[u], dfn[v]);
}
if (low[u] == dfn[u])
{
cnt ++;
while ()
{
int v = stack[--top];
id[v] = cnt;
if (v == u)
break;
}
}
}
void solve (int n)
{
int mini = INF, k = ;
for (int i=; i<=n; i++)
if (!dfn[i])
{
k ++;
Tarjan(i, );
}
if (cnt == )
{
printf ("-1\n");
return ;
}
if (k > )
{
printf ("0\n");
return ;
}
for (int i=; i<=n; i++)
for (int j=head[i]; j!=-; j=edge[j].next)
{
int u = id[i];
int v = id[edge[j].to];
if (u != v && mini > edge[j].num)
mini = edge[j].num;
}
if (mini == )
mini ++;
printf("%d\n", mini);
}
int main ()
{
int n, m;
while (scanf ("%d %d", &n, &m), n+m)
{
int u, v, num;
init ();
while (m --)
{
scanf ("%d %d %d", &u, &v, &num);
Add (u, v, num);
Add (v, u, num);
}
solve (n);
}
return ;
}

Hdu 4738 Caocao's Bridges (连通图+桥)的更多相关文章

  1. hdu 4738 Caocao's Bridges 图--桥的判断模板

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

  2. hdu 4738 Caocao's Bridges(桥的最小权值+去重)

    http://acm.hdu.edu.cn/showproblem.php?pid=4738 题目大意:曹操有一些岛屿被桥连接,每座都有士兵把守,周瑜想把这些岛屿分成两部分,但他只能炸毁一条桥,问最少 ...

  3. HDU 4738 Caocao's Bridges (2013杭州网络赛1001题,连通图,求桥)

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

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

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

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

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

  6. HDU——4738 Caocao's Bridges

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

  7. HDU 4738 Caocao's Bridges

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

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

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

  9. 【HDU 4738 Caocao's Bridges】BCC 找桥

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4738 题意:给定一个n个节点m条边的无向图(可能不连通.有重边),每条边有一个权值.判断其连通性,若双 ...

随机推荐

  1. 【PowerDesigner】PowerDesigner之CDM、PDM、SQL之间转换

    有关CDM.PDM.SQL之间转换以及不同数据库之间库表Sql的移植,首先要了解的是它们各自的用途.这里就简单的描述一下,不做详细的解释了. CDM:概念数据模型.CDM就是以其自身方式来描述E-R图 ...

  2. Linux下汇编语言学习笔记23 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  3. CODEVS——T 3736 【HR】万花丛中2

    http://codevs.cn/problem/3736/  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description ...

  4. JSON/xml、Processing 以及收集Java的设计模型

    JSON简介: 1.基本介绍 JSON(JavaScriptObject Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于ECMAScript(欧洲计算机协会制定的js规范)的 ...

  5. mybatis association和collection标签怎么用

    <resultMap type="Bill" id="ResultBill"> <id property="id" col ...

  6. mybatis返回list很智能很简答的,只需要配置resultmap进行类型转换,你dao方法直接写返回值list<对应的object>就行了啊

    mybatis返回list很智能很简答的,只需要配置resultmap进行类型转换,你dao方法直接写返回值list<对应的object>就行了啊 dao方法 public List< ...

  7. 免费好用的Microsoft iSCSI Software Target 3.3

    我们在搭建Windows群集的时候往往会使用到IP-SAN.但是面对昂贵的硬件IP-SAN,我们在学习和实验的环境中更加多的用到的往往是软件模拟的IP-SAN.今天就给大家介绍一个微软出品的免费iSC ...

  8. [Java Sprint] Spring Configuration Using Java

    There is no applicationContext.xml file. Too much XML Namespaces helped Enter Java Configuration Cre ...

  9. linux下常用快捷方式

    一.终端最常用的快捷键: 1.新建终端窗口:crtl+shift+n 2.终端的切换:shift+左右箭头 3.挂起:crtl+s 4.解除挂起:crtl+q 5.清屏:crtl+l 二.命令行光标移 ...

  10. u

    Atrrible /s/d –s –h  u盘修复