zoj 2588 Burning Bridges
题目描述:
Ferry王国是一个漂亮的岛国,一共有N个岛国、M座桥,通过这些桥可以从每个小岛都能
到达任何一个小岛。很不幸的是,最近Ferry王国被Jordan征服了。Jordan决定烧毁所有的桥。
这是个残酷的决定,但是Jordan的谋士建议他不要这样做,因为如果烧毁所有的桥梁,他自己的
军队也不能从一个岛到达另一个岛。因此Jordan决定烧尽可能多的桥,只要能保证他的军队能从
任何一个小岛都能到达每个小岛就可以了。
现在Ferry王国的人民很想知道哪些桥梁将被烧毁。当然,他们无法得知这些信息,因为哪
些桥将被烧毁是Jordan的军事机密。然而,你可以告知Ferry王国的人民哪些桥肯定不会被烧毁。
输入描述:
输入文件中包含多个测试数据。输入文件中第1行为一个整数T,1≤T≤20,表示测试数据
的数目。接下来有T个测试数据,测试数据之间用空行隔开。
每个测试数据的第1行为两个整数N和M,分别表示岛的数目和桥的数目,2≤N≤10000,
1≤M≤100000;接下来有M行,每行为两个不同的整数,为一座桥所连接的小岛的编号。注意,
两个岛之间可能有多座桥。
图论算法理论、实现及应用
- 402 -
输出描述:
对每个测试数据,首先在第1行输出一个整数K,表示K座桥不会被烧毁;第2行输出K个
整数,为这些桥的序号。桥的序号从1开始计起,按输入的顺序进行编号。
两个测试数据的输出之间有一个空行。 // tarjan 求桥的个数
// 这题还要判断重边 #include <iostream>
#include <algorithm>
#include <queue>
#include <math.h>
#include <stdio.h>
#include <string.h>
using namespace std;
#define MOD 1000000007
#define maxn 10010
struct Edge{
int tag;
int to;
int num;
int next;
}E[maxn**];
int V[maxn],num;
int pre[maxn];
int ans[maxn],bridge;
int dfst;
int child;
void init(){
dfst=;
child=;
bridge=;
num=;
memset(V,-,sizeof(V));
memset(pre,,sizeof(pre));
}
void add(int u,int v,int m){
E[num].tag=;
int e;
for(e=V[u];e!=-;e=E[e].next){
if(E[e].to==v)
{
E[e].tag=;
return ;
}
}
E[num].to=v;
E[num].num=m;
E[num].next=V[u];
V[u]=num++;
E[num].to=u;
E[num].num=m;
E[num].next=V[v];
V[v]=num++;
}
int dfs(int u,int fa){
int lowu;
lowu=pre[u]=++dfst;
int v,e;
for(e=V[u];e!=-;e=E[e].next){
v=E[e].to;
if(!pre[v]){
int lowv=dfs(v,u);
lowu=min(lowu,lowv);
if(lowv>pre[u]&&!E[e].tag){
ans[++bridge]=E[e].num;
}
}
else if(v!=fa) lowu=min(lowu,pre[v]);
}
return lowu;
}
int main()
{
int T;
int n,m;
int i,u,v;
scanf("%d",&T);
while(T--){
init();
scanf("%d %d",&n,&m);
for(i=;i<=m;i++){
scanf("%d %d",&u,&v);
add(u,v,i);
}
dfs(,);
sort(ans+,ans+bridge+);
printf("%d\n",bridge);
for(i=,u=bridge;i<=bridge;i++)
{
printf("%d",ans[i]);
if(--u)printf(" ");
}
if(bridge) printf("\n");
if(T)printf("\n");
}
return ;
}
zoj 2588 Burning Bridges的更多相关文章
- ZOJ 2588 Burning Bridges(求桥的数量,邻接表)
题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2588 Burning Bridges Time Limit: 5 ...
- ZOJ 2588 Burning Bridges(求含重边的无向连通图的割边) - from lanshui_Yang
Burning Bridges Time Limit: 5 Seconds Memory Limit: 32768 KB Ferry Kingdom is a nice little country ...
- 【求无向图的桥,有重边】ZOJ - 2588 Burning Bridges
模板题——求割点与桥 题意,要使一个无向图不连通,输出必定要删掉的边的数量及其编号.求桥的裸题,可拿来练手. 套模板的时候注意本题两节点之间可能有多条边,而模板是不判重边的,所以直接套模板的话,会将重 ...
- zoj 2588 Burning Bridges【双连通分量求桥输出桥的编号】
Burning Bridges Time Limit: 5 Seconds Memory Limit: 32768 KB Ferry Kingdom is a nice little cou ...
- zoj——2588 Burning Bridges
Burning Bridges Time Limit: 5 Seconds Memory Limit: 32768 KB Ferry Kingdom is a nice little cou ...
- ZOJ 2588 Burning Bridges(无向连通图求割边)
题目地址:ZOJ 2588 由于数组开小了而TLE了..这题就是一个求无向连通图最小割边.仅仅要推断dfn[u]是否<low[v],由于low指的当前所能回到的祖先的最小标号,增加low[v]大 ...
- ZOJ 2588 Burning Bridges (tarjan求割边)
题目链接 题意 : N个点M条边,允许有重边,让你求出割边的数目以及每条割边的编号(编号是输入顺序从1到M). 思路 :tarjan求割边,对于除重边以为中生成树的边(u,v),若满足dfn[u] & ...
- ZOJ 2588 Burning Bridges 割边(处理重边)
<题目链接> 题目大意: 给定一个无向图,让你尽可能的删边,但是删边之后,仍然需要保证图的连通性,输出那些不能被删除的边. 解题分析: 就是无向图求桥的题目,主要是提高一下处理重边的姿势. ...
- zoj 2588 Burning Bridges(割边/桥)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1588 题意:Ferry王国有n个岛,m座桥,每个岛都可以互达,现在要 ...
随机推荐
- [vijos 1770]大内密探
描述 在古老的皇宫中,有N个房间以及N-1条双向通道,每条通道连接着两个不同的房间,所有的房间都能互相到达.皇宫中有许多的宝物,所以需要若干个大内密探来守护.一个房间被守护当切仅当该房间内有一名大内密 ...
- lucas求组合数C(n,k)%p
Saving Beans http://acm.hdu.edu.cn/showproblem.php?pid=3037 #include<cstdio> typedef __int64 L ...
- 输入一个字符串,内有数字和非数字字符,将其中连续的数字作为一个整数,依次存放到一数组a中。统计共有多少个整数,并输出这些数。
#include<stdio.h> #include<stdlib.h> #include<math.h> #include<string.h> i ...
- 使用EF code first和asp.net mvc4遇到的问题总结
最近使用EF code first和asp.net mvc4做项目,遇到些问题,记录一下. 一.EF code first 生成外键列问题. 一般情况下,都是先写一个int型外键id属性,然后写一个外 ...
- Nagios 安装及微信短信提醒
引言 Nagios 作为业界非常强大的一款开源监视系统. 监控网络服务(SMTP.POP3.HTTP.NNTP.PING 等): 监控主机资源(处理器负荷.磁盘利用率等): 简单地插件设计使得用户可以 ...
- javascript分享到的源码
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- python url编码,解码
>>> urllib.unquote('%E4%B8%BD%E6%B1%9F') >>> data '\xe4\xb8\xbd\xe6\xb1\x9f' >& ...
- 无刷新分页 jquery.pagination.js
无刷新分页 jquery.pagination.js 采用Jquery无刷新分页插件jquery.pagination.js实现无刷新分页效果 1.插件参数列表 http://www.dtan.so ...
- PCL—低层次视觉—点云滤波(基于点云频率)
1.点云的频率 今天在阅读分割有关的文献时,惊喜的发现,点云和图像一样,有可能也存在频率的概念.但这个概念并未在文献中出现也未被使用,谨在本博文中滥用一下“高频”一词.点云表达的是三维空间中的一种信息 ...
- spring-boot-quartz, 依赖spring-boot-parent
spring-boot-quartz, 依赖spring-boot-parent spring-boot Easyui Quartz 项目启动后输入:http://localhost/ 数据库文件: ...