#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程序qq:928900200

    学校为全面提升学校教学质量,提高管理水平,决定开发一套小型成绩管理系统,实现以下功能.1)   系统用户分为管理员.教师和学生三种角色,每种角色都可以包含若干个用户.其中管理员登录后可以进行教师.学生 ...

  2. hdu 2074 堆放篮 好开心图纸标题

    堆放篮 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  3. Hbase结构简单、作法

    Hbase架构简单介绍.实践 版权声明:本文博主原创文章,博客,未经同意不得转载.

  4. 无法识别的属性“targetFramework”。请注意,属性名是大写和小写。错误的解决方案

    "/CRM"应用server错. 配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错.请检查以下的特定错误具体信息并适当地改动配置文件. 分析器错误消息: 无法识别的属性 ...

  5. 达到J2EE在后台action控制接待javascript弹出的对话框

    1.后台Action于: request.setAttribute("message", "这项username要么password错误,请重新输入!"); 2 ...

  6. APK 代码混淆

    # To enable ProGuard in your project, edit project.properties # to define the proguard.config proper ...

  7. [Unity3D]Unity3D游戏开发Lua随着游戏的债券(于)

    ---------------------------------------------------------------------------------------------------- ...

  8. 生命游戏(两),有一种东西叫CCScrollView

    订婚app要么game'肯定不会陌生:CCScrollView并且CCTableView. 假如我不知道是什么CCScrollView,再看看testcpp要么testlua样品棒. 先说说CCScr ...

  9. HDU 5050 Divided Land(进制转换)

    题意  给你两个二进制数m,n   求他们的最大公约数  用二进制表示  0<m,n<2^1000 先把二进制转换为十进制  求出最大公约数  再把结果转换为二进制  数比較大要用到大数 ...

  10. 黑马程序员—创建JDBC框架及原理分析

    对于Java数据库的连接,由最初学习的每次全部手工代码,到后面的不断利用知识简化代码量:这是不断学习的过程,就像人类由原始社会的钻木取火到当代的文明,都是一步步过来的! 本文不从最开始的JDBC入门开 ...