Caocao's Bridges

题意:给个无向图,求出边权最小的桥。

一看,直接缩点,若无桥,输出-1,有桥,遍历下边,更新最小。。分分钟搞定,以为IA的。。一交wa。。。

坑点:1:若原图不连通,则无须派人去!输出0!;

2:若桥的权是0,则还有派一个人把炸弹拿去,输出1!

3:有重边。(按多条边算)。

哎!记住这个教训!以后做题

1:考虑边界或者特殊数据!(边权为0!n==1等)

2:考虑原图连通性!(这次考虑了原图就强连通。。没有考虑根本不连通!)

3:重边。这题的重边是按重边算(不是一条),而我采用的数据结构和算法恰好回避了这个问题(我用链式前向星和无向图自创tarjan模板可以重边按多边算(重边的点必在一个BCC中),若要重边按一条算,则用链星和第二套记录父亲点法tarjan来)。

这题WA真正元凶:不可原谅自己!在用e[i][0]时候,竟然又犯低级错误!!!i用边啊!用什么点!!!

#include<iostream>
#include<stack>
#include<queue>
#include<cstdio>
#include<cstring>
using namespace std;
const int inf=0x3f3f3f3f;
const int maxv=1005,maxe=1000*1003;
int nume=0;int head[maxv];int e[maxe][3];
void inline adde(int i,int j,int c)
{e[nume][0]=j;e[nume][1]=head[i];head[i]=nume;e[nume++][2]=c;e[nume][0]=i;e[nume][1]=head[j];head[j]=nume;e[nume++][2]=c;
}
int dfn[maxv];int low[maxv];int vis[maxv];int ins[maxv]; stack<int>sta;
int bcc[maxv];int numb=0;int times=0; int vise[maxe];
int n,m;
void tarjan(int u)
{dfn[u]=low[u]=times++;ins[u]=1;sta.push(u);for(int i=head[u];i!=-1;i=e[i][1]){if(vise[i])continue;int v=e[i][0];if(!vis[v]){vis[v]=1;vise[i]=vise[i^1]=1;tarjan(v);if(low[v]<low[u])low[u]=low[v];}else if(ins[v]&&dfn[v]<low[u]){low[u]=dfn[v];}}if(low[u]==dfn[u]){numb++;int cur;do{cur=sta.top();sta.pop();ins[cur]=0;bcc[cur]=numb;}while(cur!=u);}
}
void solve()
{int marks=0;for(int i=1;i<=n;i++){if(!vis[i]){vis[i]=1;tarjan(i);marks++;}}if(marks>=2)       //坑1{printf("0\n");return ;}if(numb==1)               {printf("-1\n");return ;}int mins=inf;for(int i=1;i<=n;i++) for(int j=head[i];j!=-1;j=e[j][1]){if(bcc[i]!=bcc[e[j][0]])             //e[j][0]竟然写成e[i][0]!!!sb!!{if(e[j][2]<mins)mins=e[j][2];}}if(mins==0)mins=1;    //坑2printf("%d\n",mins);
}
void read_build()
{int aa,bb,cc;for(int i=0;i<m;i++){scanf("%d%d%d",&aa,&bb,&cc);adde(aa,bb,cc);}
}
void init()
{numb=times=nume=0;memset(vise,0,sizeof(vise));for(int i=0;i<maxv;i++){head[i]=-1;ins[i]=dfn[i]=low[i]=bcc[i]=vis[i]=0;}
}
int main()
{while(~scanf("%d%d",&n,&m)&&(n||m)){init();read_build();solve();}return 0;
}

hdu 4738 无向图缩点断桥 // 细节坑题相关推荐

  1. HDU 4738 Caocao‘s Bridges(桥、任何位运算一定都要加括号、因为有重边所以用前向星)

    HDU 4738 Caocao's Bridges(桥.任何位运算一定都要加括号.因为有重边所以用前向星) Caocao was defeated by Zhuge Liang and Zhou Yu ...

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

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

  3. HDU 4738 Caocao's Bridges 求桥 诸葛亮带着炸弹跑路了

    Description Caocao was defeated by Zhuge Liang and Zhou Yu in the battle of Chibi. But he wouldn't g ...

  4. 2018 HDU多校第四场赛后补题

    2018 HDU多校第四场赛后补题 自己学校出的毒瘤场..吃枣药丸 hdu中的题号是6332 - 6343. K. Expression in Memories 题意: 判断一个简化版的算术表达式是否 ...

  5. 【BZOJ-1952】城市规划 [坑题] 仙人掌DP + 最大点权独立集(改)

    1952: [Sdoi2010]城市规划 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 73  Solved: 23 [Submit][Status ...

  6. HDU - 4738 Caocao's Bridges(边双缩点)

    题目链接:点击查看 题目大意:给出一个由n个点和m条边构成的无向图,表示n个岛屿之间的m条道路,现在周瑜有一个炸药,可以炸掉任意的一条道路,不过每条道路都有一个权值,代表这条道路上防守的卫兵数量,如果 ...

  7. hdu 4738 Caocao's Bridges 求无向图的桥【Tarjan】

    <题目链接> 题目大意: 曹操在长江上建立了一些点,点之间有一些边连着.如果这些点构成的无向图变成了连通图,那么曹操就无敌了.周瑜为了防止曹操变得无敌,就打算去摧毁连接曹操的点的桥.但是诸 ...

  8. 无向图缩点:tarjan点双与边双缩点(模板)

    e-DCC边双缩点:(用之前记得init) cnt1是从2开始的 边双缩点可以将无向图转换为一个森林,如果原图保证连通的话,那么可以转换为一棵树 const int N=1e4+100;const i ...

  9. HDU 3605Escape(缩点+网络流之最大流)

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3605 本来打算昨天写两道题的,结果这个题卡住了,最后才发现是最后的推断条件出错了,推断满流的条件应该是 ...

最新文章

  1. 开发者必备的15 个Web开发工具
  2. GIt本地相关操作(一)
  3. explicit_defaults_for_timestamp参数的专题报告
  4. python自动提交网页表单_python自动提交表单数据库
  5. loadrunner linux 端口,Linux下loadrunner generator的安装
  6. GDB调试使用技巧 - 专职C++ - C++博客
  7. Python中的枚举类型
  8. android制作下拉选择_Excel制作一、二、三级下拉菜单技巧,你一定不能错过
  9. WAF和IPS的区别
  10. linux接口vlan tag,linux c vlan tag 技术详解
  11. 关于Windows的 “睡眠“ 和 “休眠“
  12. 基于java的URP教务系统爬虫实现
  13. 基于Select模型的匿名聊天室v1.0
  14. 集成OpenLDAP与Kerberos实现统一认证(三):基于SASL/GSSAPI深度集成
  15. CSS list-style属性控制li标签样式
  16. pb文件转java 报:protoc did not exit cleanly. Review output for more information
  17. usb设备检测linux,Linux下USB设备检测全教程(转)
  18. C语言基础1:初识C语言(转义、注释;数组、操作符、反码、补码、static、define、指针、结构体常变量;局部变量;作用域、生命周期)
  19. 蓝桥杯试题 基础练习 Fibonacci数列
  20. Spring Security OAuth2.0认证授权知识概括

热门文章

  1. python全栈之巅_Windows运维之关于WIN7故障模块StackHash_0a9e解决方法
  2. 【MySQL 第一天安装教程】
  3. 优秀课件笔记旅游地理学Geography of Tourism
  4. 74HC165D驱动 2021-05-08
  5. AutoCAD 2023安装教程
  6. 互联网摸鱼日报(2022-11-27)
  7. 抵押信息--动产抵押和股权出质
  8. python 音频特征提取工具库
  9. 取模运算和取余运算的区别
  10. Gin 框架 核心 httprouter tree树结构解析