【POJ3352】Road Construction tarjan求边-双连通分量,裸题模板题

转载请注明出处:http://blog.csdn.net/vmurder/article/details/42671851
其实我就是觉得原创的访问量比未授权盗版多有点不爽233。。。

裸题只给模板。

tarjan可以实现。

太水不发题解。

代码:

#include 
#include 
#include 
#include 
#define N 1010
#define M 2020
using namespace std;
struct KSD
{
	int v,next;
}e[M];
int head[N],cnt;
inline void add(int u,int v)
{
	e[++cnt].v=v;
	e[cnt].next=head[u];
	head[u]=cnt;
}
int dfn[N],low[N],n,m;
int id[N],group,d[N];
int ans,edges; // 边-双个数、 桥个数
int stk[N],top;

void tarjan(int x,int p) // 边双连通分量,即无桥。
{
	int i,v,temp;
	dfn[x]=low[x]=++cnt;
	stk[++top]=x;
	for(i=head[x];i;i=e[i].next)
	{
		v=e[i].v;
		if(v==p)continue;
		if(!dfn[v])
		{
			tarjan(v,x);
			low[x]=min(low[x],low[v]);
		}
		else low[x]=min(low[x],dfn[v]);
//		if(dfn[x]>1);
	}

	return 0;
}



你可能感兴趣的:(边双连通分量,模板,裸题)