杭电acm1272

通过数据要判断俩点:

1、要保证每个点都相通,2、两点之间只有一条路径相通

方法:

1、判断连通图,即ans<=1,就是只有一个父节点,2、flag=1,即任意两点的父节点不能相同

#include 
#include 
#define N 100001

struct d{
	int x;
	int y;
}buf[N];

int flag;
int parent[N];
bool judge[N];

int find(int x) {
	return x==parent[x] ? x : find(parent[x]);
}

void uni(int x, int y) {
	
	judge[x] = true;
	judge[y] = true;
	int a = find(x);
	int b = find(y);
	if(a==b)
		flag = 0;//若两点的父节点相同,则 flag=0 
	else
		parent[a] = b;
}

void init() {
	
	memset(judge, 0, sizeof(judge));
	flag = 1;
	for(int j=0; j



转载于:https://www.cnblogs.com/StevenL/p/6818486.html

你可能感兴趣的:(c/c++)