HOJ 1007 SPF

题目大意是给你一个无向图,问割点和去除割点后的连通分量

求连通分量可以在求割点的时候记录一下 也可以求出割点后删除该点做一遍dfs求出连通分量


这是第一种方法


#include
#include
#include
using namespace std;

struct path{int x,y;}s[500001];
int fst[500001],nxt[500001];

int tim;
int pre[1001],low[1001];
int cut[1001];
int m,n,x,y;
void makeside(int x,int y)
{
	n++;
	s[n].x=x;
	s[n].y=y;
	nxt[n]=fst[x];
	fst[x]=n;
}
bool root[1001];
int dfs(int u,int fa)
{
	tim++;
	int lowu=tim,child=0;
	pre[u]=tim;
	for(int e=fst[u];e!=-1;e=nxt[e])
	{
		int v=s[e].y;
		if(!pre[v])
		{
			int lowv=dfs(v,u);
			if(lowv>=pre[u])cut[u]++;
			
			lowu=min(lowv,lowu);
			child++;
		}
		else
		if(pre[v]



惊奇的发现tim的初始值居然是-1

不知道这是什么原因

看来全局变量也要赋初值啊

你可能感兴趣的:(HOJ,割点和桥)