题意:N个岛有M个桥相连,烧掉尽可能多的桥,让N个岛仍然相连,问必须不能烧掉的桥的个数及编号。就是求割边

割边与割点差不多都是tarjan式的dfs,有两个地方不一样 见代码

代码:

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#define nMAX 10005
#define mMAX 200010
#define Min(a,b)a<b?a:b
using namespace std;
int head[nMAX],dfn[nMAX],low[nMAX],bridge[mMAX];
int n,times,s_edge,nbridge;
struct Edge
{int v,nxt,id;//id记录第几个桥
}edge[mMAX];void addedge(int u,int v,int id)
{edge[++s_edge].v=v;edge[s_edge].nxt=head[u];edge[s_edge].id=id;head[u]=s_edge;edge[++s_edge].v=u;edge[s_edge].nxt=head[v];edge[s_edge].id=id;head[v]=s_edge;}
void tarjan(int u,int fa)
{bool fg=0;//判断重边,重边不是割边,炸掉不被dfn[u]=low[u]=++times;for(int e=head[u];e;e=edge[e].nxt){int v=edge[e].v;if(v==fa&&!fg)//判断重边{fg=1;continue;}if(!dfn[v]){tarjan(v,u);low[u]=Min(low[u],low[v]);//1.没有根节点的判断 2.割点中if(low[v]>=dfn[u]),//而割边if(low[v]>dfn[u)没有=号if(low[v]>dfn[u])bridge[nbridge++]=edge[e].id;}else low[u]=Min(low[u],dfn[v]);}
}
void init()
{memset(head,0,sizeof(head));memset(dfn,0,sizeof(dfn));s_edge=1;times=0;
}
int main()
{int CASE,i,j,k,m;scanf("%d",&CASE);while(CASE--){init();scanf("%d%d",&n,&m);for(k=1;k<=m;k++){scanf("%d%d",&i,&j);addedge(i,j,k);}nbridge=0;tarjan(1,-1);printf("%d\n",nbridge);if(nbridge){sort(bridge,bridge+nbridge);for(i=0;i<nbridge-1;i++)printf("%d ",bridge[i]);printf("%d\n",bridge[i]);}if(CASE)printf("\n");}return 0;
}

  

  

转载于:https://www.cnblogs.com/sdau10kuaile/archive/2012/04/10/2441349.html

ZOJ 2588 Burning Bridges 割边相关推荐

  1. zoj 2588 buring bridges (无向图求桥,含重边)

    注意输出格式即可 #include<iostream> #include<cstdio> #include<cstring> #include<algorit ...

  2. 图论5:Tarjan!塔尖!

    文章目录 小模板 强联通分量 割点 桥 边双连通分量 点双连通分量 支配树 CodeChef - GRAPHCNT 3281: 小P的烦恼 test2018.3.3:problem C 仙人掌和圆方树 ...

  3. 简述linux的系统组成,Linux系统组成

    1 系统组成 BootLoader:操作系统引导程序 内核: 文件系统:应用程序(用户开发的.网上下载的) 2 安装USB驱动 dongry@d-linux:~$ insmod usb_dnw.ko ...

  4. 优雅退出_如何优雅地退出技术工作

    优雅退出 Over the past eight years I have seen a fair number of people leave their jobs at the company I ...

  5. ZOJ POJ题目分类

    ZOJ题目分类 初学者题:1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 13 ...

  6. POJ ZOJ题目分类

    POJ,ZOJ题目分类(多篇整合版,分类很细致,全面) 标签: 题目分类POJ整理 2015-04-18 14:44 1672人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: ACM资料(5) ...

  7. POJ,ZOJ题目分类(多篇整合版,分类很细致,全面)

    水题: 3299,2159,2739,1083,2262,1503,3006,2255,3094 初级: 一.基本算法:        (1)枚举 (1753,2965)       (2)贪心(13 ...

  8. 【ZOJ题目分类】备忘

    ZOJ 题目 分类 初学者题: 1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 ...

  9. NOIP 好题推荐(DP+搜索+图论)POJ ZOJ

    NOIP好题推荐(DP+搜索+图论)POJ ZOJ 1370 Gossiping (数论->模线性方程有无解的判断)+(图论->DFS)  1090 Chain ->格雷码和二进制码 ...

最新文章

  1. 设置centos6.5虚拟机时间同步
  2. Qt qCompress和qUncompress 压缩和解压文件
  3. style=@android:style/buttonbar,Setting style=?android:attr/buttonBarStyle to parent layout and s...
  4. 一文彻底搞懂快速幂(原理、实现、矩阵快速幂)
  5. summerDao-比mybatis更强大无需映射配置的dao工具
  6. python中的列表分片详解_python列表与元组详解实例
  7. 工业交换机与光纤收发器的区别
  8. Coolite动态加载CheckboxGroup,无法在后台中获取
  9. 多线程笔记补充之线程通信wait和notify方法以及Lock和Condition接口的使用
  10. 阿里摩酷实验室计算机视觉团队校园招聘
  11. Linux远程桌面工具Xming+Putty的搭建
  12. EMNLP 2018 | 为什么使用自注意力机制?
  13. 《必玩》!学习大师们的游戏设计经验,激发你的游戏创造力!
  14. fio与iometer
  15. 期权与期货有哪些不同?
  16. 机器学习入门之二:一个故事说明什么是机器学习(转载)
  17. 论文阅读笔记 | Transformer系列——Focal Transformer
  18. Jenkins+GitHub+fir_cli 一行命令从源码到fir im
  19. 去掉设备和驱动器的百度网盘
  20. git中merge分支到master产生冲突

热门文章

  1. OpenKruise:解放 DaemonSet 运维之路
  2. php修改网页打印纸张 份数,打印机上复印10份怎么设置
  3. 怎么看到方法内引用方法的注释_开门就看到餐厅,玄关怎么设计?试试这3个方法,专为小户型设计...
  4. python判断语句_python条件判断语句if elif else使用
  5. 广东第二师范学院计算机网络试题,韩山师范学院期末计算机考题2.doc
  6. 【直播】如何获得更加高效的深度卷积神经网络
  7. 【图像分割模型】多分辨率特征融合—RefineNet
  8. 【杂谈】三人行必有AI,你会在其一吗?
  9. lazada选品,东南亚韩潮周边产品爆卖,单日销售额5万美金!
  10. 全球及中国冷冻玉米粒行业盈利分析与投资机会评估报告2022-2028年版