并查集:find函数

int find(int x)
{
	if (x != parent[x])
	{
		parent[x] = find(parent[x]);
	}
	return parent[x];
}

带权并查集:find函数

int find(int x)
{
	if (x != parent[x])
	{
		int t = parent[x];						//记录当前节点的父节点
		parent[x] = find(parent[x]);
		value[x] += value[t];					//
	}
	return parent[x];
}

带权并查集:合并函数:

		int px = find(x);
		int py = find(y);
		if (px != py)
		{
			parent[px] = py;
			value[px] = -value[x] + value[y] + s;
		}

在这里插入图片描述

 posted on 2019-04-21 19:45  谁是凶手1703  阅读(49)  评论(0)    收藏  举报