割点与桥

原创 2016年05月31日 20:28:15
#include"iostream"
#include"algorithm"
#include"vector"
using namespace std;
const int v=1000;
int edge[v][v];
int bridge[v][v],cut[v];
int low[v],dfn[v],vis[v];
void cut_bridge(int cur,int father,int dep,int n)
{
	vis[cur]=1;
	dfn[cur]=low[cur]=dep;
	int children=0;
	for(int i=0;i<n;i++)
		if(edge[cur][i])
		{
			if(i!=father&&vis[i]==1)
			{
				if(dfn[i]<low[cur])
					low[cur]=dfn[i];
			}
			if(vis[i]==0)
			{
				cut_bridge(i,cur,dep+1,n);
				children++;
				if(low[i]<low[cur]) low[cur]=low[i];
				if((father==-1&&children>1)||(father!=-1&&low[i]>=dfn[cur]))
					cut[cur]=true;
				if(low[i]>dfn[cur])
				{
					bridge[cur][i]=bridge[i][cur]=true;
				}
			}
		}
		vis[cur]=2;
}
int main()
{
    freopen("a.txt","r",stdin);
	int n,m;
	while(cin>>n>>m)
	{
		memset(edge,0,sizeof(edge));
		memset(vis,0,sizeof(vis));
		memset(bridge,0,sizeof(bridge));
		memset(cut,0,sizeof(cut));
		memset(dfn,0,sizeof(dfn));
		memset(low,0,sizeof(low));
		for(int i=0;i<m;i++)
		{
			int s,t;
			cin>>s>>t;
			edge[s][t]=edge[t][s]=1;
		}
		cut_bridge(0,-1,0,n);
		cout<<"bridge:\n";
		for(int i=0;i<n;i++)
			for(int j=0;j<n;j++)
				if(bridge[i][j])
					cout<<i<<" "<<j<<endl;
		cout<<"cut:\n";
		for(int i=0;i<n;i++)
			if(cut[i]==1)
				cout<<i<<endl;
	}
	return 0;
}
/*
               0
			  /  \
			 1    2
			/ \  / \
		   3   4 5  6
*/

版权声明:本文为博主原创文章,未经博主允许不得转载。

算法五:图的割点和桥

一、定义 图的割点 一个无向连接图中,如果删除某个顶点后,图不再连同(即任意两点之间不能互相到达) ,称这样的顶点为割点 或:某个点是割点当且仅当删除该点和与该点相关联的边后图变得不连通。 ...
  • my88site
  • my88site
  • 2015年07月09日 16:16
  • 1228

图论之割点和桥

割点:如果在图G中删去一个结点u后,图G的连通分枝数增加,即W(G-u)>W(G),则称结点u为G的割点,又称关节点。 桥:如果在图G中删去一条边e后,图G的连通分支数增加,即W(G-e)>W(G)...
  • baidu_17313961
  • baidu_17313961
  • 2015年12月08日 10:04
  • 828

Tarjan算法求解一个无向图中的割点和桥问题

基本概念割点:Articulation Point 在无向连通图中,删除一个顶点v及其相连的边后,原图从一个连通分量变成了两个或多个连通分量,则称顶点v为割点,同时也称关节点(Articulatio...
  • starstar1992
  • starstar1992
  • 2016年10月27日 13:29
  • 1442

连通图的割点、割边(桥)、块、缩点,有向图的强连通分量

连通图的割点、割边(桥)、块、缩点,有向图的强连通分量   【本文摘选自百度文库】 一、基本概念 无向图 割点:删掉它之后(删掉所有跟它相连的边),图必然会分裂成两个或两个以上的子图。 块:没有割点...
  • ACMore_Xiong
  • ACMore_Xiong
  • 2015年08月28日 00:15
  • 2284

图的割点、桥和双连通分支的基本概念

ACM模版[点连通度与边连通度] 在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。一个图的点连通度的定...
  • f_zyj
  • f_zyj
  • 2016年06月13日 23:31
  • 1620

求无向图的割点和桥

由具体实例引出无向图割点的求法,以及存在重边情况下求割边的改进方法 ------------------------------------------------------------ 因而对于求...
  • chaiwenjun000
  • chaiwenjun000
  • 2016年05月12日 21:45
  • 795

Tarjan三大算法之双连通分量(割点,桥)

Robert Endre Tarjan是一个美国计算机学家,他传奇的一生中发明了无数算法,统称为Tarjan算法。其中最著名的有三个,分别用来求解 1) 无向图的双连通分量 2) 有向图的强连通分...
  • fuyukai
  • fuyukai
  • 2016年04月23日 11:25
  • 4915

割点,桥,双连通分量Tarjan ,入门练习

POJ 2117 求在一个无向图中,删去一个点,图中最多的连通块有多少个。 因为是无向图,初识的连通块block在,dfs里面就可以找到,然后我们只要找到割点,记录增加的连通块数目,最后扫一遍 取...
  • qq_24664053
  • qq_24664053
  • 2016年05月02日 20:09
  • 254

割点和桥---Tarjan算法

使用Tarjan算法求解图的割点和桥。
  • qing101
  • qing101
  • 2014年08月28日 11:45
  • 512

无重边连通无向图求割点和桥

一.割点和桥  无向连通图中,如果删除某点后,图变 成不连通,则称该点为割点。    无向连通图中,如果删除某边后,图变 成不连通,则称该边为桥。 所以说啊,割点和桥这个概念的应该范围应该只是在...
  • u013555159
  • u013555159
  • 2016年09月03日 21:01
  • 455
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:割点与桥
举报原因:
原因补充:

(最多只允许输入30个字)