。。。

导航

【数据结构】【并查集模板】

void init()//初始化函数 
{
	int i;
	for(i = 1; i <= n; i ++)
		f[i] = i;
	return;
}

int find(int v)//查找根结点 
{
	if(f[v] == v)
		return v;
	else
	{
		//这里是路径压缩,每次在函数返回时,把遇到的结点改为根结点的编号
		//提高找到根结点的速度 
		f[v] = find(f[v]);
		return f[v];
	}
}

void merge(int x,int y)//合并两个子集的函数 
{
	int t1,t2;
	t1 = find(x);
	t2 = find(y);
	if(t1 != t2)
	{
		f[t1] = t2;
	 } 
	 return;
}


ACM模板


posted on 2017-07-24 09:19  大学僧  阅读(122)  评论(0)    收藏  举报