ZOJ 2588 Burning Bridges 割边
题意: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 割边相关推荐
- zoj 2588 buring bridges (无向图求桥,含重边)
注意输出格式即可 #include<iostream> #include<cstdio> #include<cstring> #include<algorit ...
- 图论5:Tarjan!塔尖!
文章目录 小模板 强联通分量 割点 桥 边双连通分量 点双连通分量 支配树 CodeChef - GRAPHCNT 3281: 小P的烦恼 test2018.3.3:problem C 仙人掌和圆方树 ...
- 简述linux的系统组成,Linux系统组成
1 系统组成 BootLoader:操作系统引导程序 内核: 文件系统:应用程序(用户开发的.网上下载的) 2 安装USB驱动 dongry@d-linux:~$ insmod usb_dnw.ko ...
- 优雅退出_如何优雅地退出技术工作
优雅退出 Over the past eight years I have seen a fair number of people leave their jobs at the company I ...
- ZOJ POJ题目分类
ZOJ题目分类 初学者题:1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 13 ...
- POJ ZOJ题目分类
POJ,ZOJ题目分类(多篇整合版,分类很细致,全面) 标签: 题目分类POJ整理 2015-04-18 14:44 1672人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: ACM资料(5) ...
- POJ,ZOJ题目分类(多篇整合版,分类很细致,全面)
水题: 3299,2159,2739,1083,2262,1503,3006,2255,3094 初级: 一.基本算法: (1)枚举 (1753,2965) (2)贪心(13 ...
- 【ZOJ题目分类】备忘
ZOJ 题目 分类 初学者题: 1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 ...
- NOIP 好题推荐(DP+搜索+图论)POJ ZOJ
NOIP好题推荐(DP+搜索+图论)POJ ZOJ 1370 Gossiping (数论->模线性方程有无解的判断)+(图论->DFS) 1090 Chain ->格雷码和二进制码 ...
最新文章
- 设置centos6.5虚拟机时间同步
- Qt qCompress和qUncompress 压缩和解压文件
- style=@android:style/buttonbar,Setting style=?android:attr/buttonBarStyle to parent layout and s...
- 一文彻底搞懂快速幂(原理、实现、矩阵快速幂)
- summerDao-比mybatis更强大无需映射配置的dao工具
- python中的列表分片详解_python列表与元组详解实例
- 工业交换机与光纤收发器的区别
- Coolite动态加载CheckboxGroup,无法在后台中获取
- 多线程笔记补充之线程通信wait和notify方法以及Lock和Condition接口的使用
- 阿里摩酷实验室计算机视觉团队校园招聘
- Linux远程桌面工具Xming+Putty的搭建
- EMNLP 2018 | 为什么使用自注意力机制?
- 《必玩》!学习大师们的游戏设计经验,激发你的游戏创造力!
- fio与iometer
- 期权与期货有哪些不同?
- 机器学习入门之二:一个故事说明什么是机器学习(转载)
- 论文阅读笔记 | Transformer系列——Focal Transformer
- Jenkins+GitHub+fir_cli 一行命令从源码到fir im
- 去掉设备和驱动器的百度网盘
- git中merge分支到master产生冲突
热门文章
- OpenKruise:解放 DaemonSet 运维之路
- php修改网页打印纸张 份数,打印机上复印10份怎么设置
- 怎么看到方法内引用方法的注释_开门就看到餐厅,玄关怎么设计?试试这3个方法,专为小户型设计...
- python判断语句_python条件判断语句if elif else使用
- 广东第二师范学院计算机网络试题,韩山师范学院期末计算机考题2.doc
- 【直播】如何获得更加高效的深度卷积神经网络
- 【图像分割模型】多分辨率特征融合—RefineNet
- 【杂谈】三人行必有AI,你会在其一吗?
- lazada选品,东南亚韩潮周边产品爆卖,单日销售额5万美金!
- 全球及中国冷冻玉米粒行业盈利分析与投资机会评估报告2022-2028年版