#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <map>
#define inf 0x3f3f3f3f
#define eps 1e-6
#define ll __int64
using namespace std;
#define N 10010
#define M 100010 struct node//边结点
{
int v,tag,id;//v为所连接的还有一个结点。tag为重边数,id为序号
node *next;
};
int n,m;//点,边数
int nid;//输入时边的序号
node mem[M*2];int memp;//mem为存储边结点的数组,memp为mem数组序号
node *e[N];//邻接表
int brig[M];//brig[i]=1表示第i+1条边为割边
int nbrig;//求得割边的数目
int low[N],dfn[N];//low[i]为顶点i可达祖先的最小编号。dfn[i]为深度优先数
int vis[N];//0未訪问 1已訪问 2已訪问且已检查邻接结点 //在邻接表中插入边(i,j)。若有重边。则仅仅把对应边结点的tag+1
int addedge(int i,int j)
{
node* p;
for(p=e[i];p!=NULL;p=p->next)
if(p->v==j) break;
if(p!=NULL)
{
p->tag++;
return 0;
}
p=&mem[memp++];
p->v=j;
p->next=e[i];
e[i]=p;
p->id=nid;
p->tag=0;
return 1;
} //參数含义:i为当前搜索的顶点。father为i的父节点。dth为搜索深度
void dfs(int i,int father,int dth)
{
vis[i]=1;
dfn[i]=low[i]=dth;
node* p;
for(p=e[i];p!=NULL;p=p->next)
{
int j=p->v;
if(j!=father&&vis[j])
low[i]=min(low[i],dfn[j]);
if(!vis[j])
{
dfs(j,i,dth+1);
low[i]=min(low[i],low[j]);
if(low[j]>dfn[i]&&!p->tag)
brig[p->id]=++nbrig; }
}
vis[i]=2;
} void init()
{
memp=nid=nbrig=0;
memset(e,0,sizeof e);
memset(brig,0,sizeof brig);
memset(vis,0,sizeof vis);
} int main()
{
int t,i,j,a,b;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
init();
for(i=0;i<m;i++)
{
scanf("%d%d",&a,&b);
addedge(a-1,b-1);
addedge(b-1,a-1);
nid++;
}
dfs(0,-1,1);
printf("%d\n",nbrig);
for(i=0,j=nbrig;i<m;i++)
{
// printf("i:%d brig[i]:%d\n",i+1,brig[i]);
if(brig[i])
{
printf("%d",i+1);
if(--j) putchar(' ');
}
}
if(nbrig) puts("");
if(t) puts("");
}
return 0;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

zoj2588 Burning Bridges --- 寻求尖端的更多相关文章

  1. ZOJ2588 Burning Bridges(割边模板)

    题目要输出一个无向图的所有割边.用Tarjan算法: 一遍DFS,构造出一颗深度优先生成树,在原无向图中边分成了两种:树边(生成树上的边)和反祖边(非生成树上的边). 顺便求出每个结点的DFS序dfn ...

  2. zoj2588 Burning Bridges(无向图的桥)

    题目请戳这里 题目大意:给一张无向图,现在要去掉一些边,使图仍然连通,求不能去掉的边. 题目分析:就是求无向图的桥. tarjan算法跑一遍,和无向图割点十分类似,这里要找low[v] > df ...

  3. ZOJ2588 Burning Bridges 无向图的割边

    题目大意:求无向图的割边编号. 割边定义:在一个连通图中,如果删去一个边e,图便变成不连通的两个部分,则e为该图的割边. 求法:边(u,v) 不是割边,当且仅当边(u,v)在一个环内.因此所有不在环内 ...

  4. ZOJ 2588 Burning Bridges(求桥的数量,邻接表)

    题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2588 Burning Bridges Time Limit: 5 ...

  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 ...

  6. zoj 2588 Burning Bridges【双连通分量求桥输出桥的编号】

    Burning Bridges Time Limit: 5 Seconds      Memory Limit: 32768 KB Ferry Kingdom is a nice little cou ...

  7. xtu summer individual 5 E - Burning Bridges

    Burning Bridges Time Limit: 5000ms Memory Limit: 32768KB This problem will be judged on ZJU. Origina ...

  8. zoj——2588 Burning Bridges

    Burning Bridges Time Limit: 5 Seconds      Memory Limit: 32768 KB Ferry Kingdom is a nice little cou ...

  9. Burning Bridges 求tarjan求割边

    Burning Bridges 给出含有n个顶点和m条边的连通无向图,求出所有割边的序号. 1 #include <cstdio> 2 #include <cstring> 3 ...

随机推荐

  1. Naive Bayes Classification

    Maching Learning QQ群:2 请说明来自csdn 微信:soledede

  2. JSP+Ajax站点开发小知识

    一.JSP基础 1.<select  name="love"  size="3">当中的size属性指定了列表框显示选项的条数.假设全部选项多于这个 ...

  3. ASF(传感器)

    版权声明:曾经的Blog文章合并.原创作品,谢绝转载.否则将追究法律责任. SensorManager类:用于创建sensor service的实例.该类提供了非常多 用于訪问和枚举传感器,注冊和注销 ...

  4. oracle存储过程的例子

    oracle存储过程的例子 分类: 数据(仓)库及处理 2010-05-03 17:15 1055人阅读 评论(2)收藏 举报 认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的 ...

  5. JFrame、JDialog close

    package common; import javax.swing.JFrame; import javax.swing.SwingUtilities; /*2015-5-26*/ public c ...

  6. base 64 编解码器

    base 64 编解码 1. base64的编码都是按字符串长度,以每3个8bit的字符为一组, 2. 然后针对每组.首先获取每一个字符的ASCII编码. 3. 然后将ASCII编码转换成8bit的二 ...

  7. poj3928 Ping pong 树状数组

    http://poj.org/problem?id=3928 Ping pong Time Limit: 1000MS   Memory Limit: 65536K Total Submissions ...

  8. Web指纹识别目的Discuz识别+粗糙的版本演绎

    这个识别程序是本学期在我的职业培训项目.它是做一类似至Zoomeye怪东西,然后使用ES集成,为了让搜索引擎寻找.因此,我们必须首先去网上识别相应的能力Web包裹,如果用户输入的关键词:Discuz ...

  9. .NET 并行(多核)编程系列之七 共享数据问题和解决概述

    原文:.NET 并行(多核)编程系列之七 共享数据问题和解决概述 .NET 并行(多核)编程系列之七 共享数据问题和解决概述 前言:之前的文章介绍了了并行编程的一些基础的知识,从本篇开始,将会讲述并行 ...

  10. Java中关于OOM的场景及解决方法(转)

    http://developer.51cto.com/art/201112/305696.htm 1.OOM for Heap=>例如:java.lang.OutOfMemoryError: J ...