#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. java.lang.OutOfMemoryError: Java heap space错误和方法(集、转)

    错误的方式来解决溢出下面的堆空间是从网上找: java.lang.OutOfMemoryError: Java heap space ================================= ...

  2. 初识google多语言通信框架gRPC系列(一)概述

    gRPC概述 3/26/2016 9:16:08 AM 目录 一.概述 二.编译gRPC 三.C#中使用gRPC 四.C++中使用gRPC 一直在寻找多平台多语言的通信框架,微软的WCF框架很强大和灵 ...

  3. Eclipse4.4.2手动安装Veloeclipse-2.0.8

    引言:     新安装了Eclipse最新版本 4.4.2 Luna(月神),由于项目中使用到了模板引擎Velocity,所以想安装一个Velocity插件, 在网上找了一下,看到Google的vel ...

  4. 辛格尔顿和Android

    辛格尔顿(Singleton) .singleton.h,定义类的基本成员及接口 #ifndef SINGLETON_H_INCLUDE #define SINGLETON_H_INCLUDE cla ...

  5. 简单的反射 把datatable 转换成list对象

    /// <summary> /// 把datatable 转换成list对象 /// </summary> /// <typeparam name="T&quo ...

  6. 神马是AB測试?

    手机响起了短信提示音,桂芬拿起手机,滑动解锁,看到是来福的短信,心里不禁一阵小鹿乱撞.     "喜欢看<冰封重生之门>吗?"     如此充满暗示意味的短信让桂芬激动 ...

  7. Linux学习笔记——举例说,makefile 多个文件

    0.前言     从学习C语言開始就慢慢開始接触makefile,查阅了非常多的makefile的资料但总感觉没有真正掌握makefile,假设自己动手写一个makefile总认为非常吃力. 所以特意 ...

  8. CF417D--- Cunning Gena(序列+像缩进dp)

    A boy named Gena really wants to get to the "Russian Code Cup" finals, or at least get a t ...

  9. 新秀系列C/C++经典问题(六)

    类包含一个指向成员复制 称号:下面是类和执行的阵列的声明.题.并针对存在的问题提出几种解决方式. template<typename T> class Array { public: Ar ...

  10. 几款开源ESB总线的比较(转)

    现有的开源ESB总线中,自从2003年第一个开源总线Mule出现后,现在已经是百花争鸣的景象了.现在我就对现有的各种开源ESB总线依据性能.可扩展性.资料文档完整程度以及整合难易程度等方面展开. CX ...