最近学习与总结--并查集

一、近期总结
1)最近在洛谷上刷了一些题,感觉还可以,难度不是太大,主要是一些基础模拟,不过模拟起来需要花费点时间。有一道题是关于环的,需要进行破环,之前有听老师讲过,但没自己做过,破环主要是将一个环的全部元素按顺序重复一次。还有一个贪心的题目,好久没做了,都快忘完了,希望能够在之后的VJ比赛上多注意一下。还有做题时总是不注意细节,出现错误,必须去测试不同数据去发现错误。
2)图论的题目不太明白,听得迷迷糊糊的,还没去做题,这两天有点懈怠了,还是应该以学习的东西为重。
二、图论学习
1、并查集
!) 定义:
并查集是一种用来管理分组情况的数据结构,可以高效进行,查和并操作。
2)结构:树结构、每个元素对应结点每个组对应一棵树。
实现代码:

int par[];
int rank[[;
void chushi(int n;)//n各节点表示n个元素,开始时没有边。
{
	for (int i=0;i<n;i++)
	par[i]=i;
	rank[i]=0;
} 
int find(int x)//查询该元素的根,如果是本身,则该元素单独一组,否则递归直到找到为止。
{
	if(par[x]==x)
	{
		return x;
	}
	else 
	{
		return par[x]=find(par[x]);
	} 
}
void untie(int x,int y)
{
	x=find(x);
	y=find(y);
	if(x==y) return;//同根不需要合并
	if(rank[x]<rank[y])
	{
		par[x]=y;
	}
	else 
	{
		par[y]=x;
		if(rank[x]==rank[y]) rank[x]++;
	}
}
bool same(int x,int y)
{
	return find(x)==find(y);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值