2020 Multi-University Training Contest 2---- HDU--6763、Total Eclipse(并查集)

本文介绍了如何利用并查集解决HDU 6763题目的极大连通块问题。题目要求在每次操作中选取权值大于0的极大联通块并将所有点的权值减1,直至所有点权值为0,求所需操作次数。关键在于理解并查集中根节点的特性,即每个连通块的根节点是最小权值点,这些点会最先变为0并导致连通块分裂。通过代码实现这一策略,可以求得正确答案。
摘要由CSDN通过智能技术生成

题目链接

题面:
在这里插入图片描述

题意:
每次选择一个能选择的极大连通块,连通块内的点的权值都大于0。
每次操作使得选择的极大联通块内的所有点的点权值-1。
问使得图上所有的点的点权值全为0,需要进行多少次操作。

题解:
在这里插入图片描述
可以发现,并查集每个连通块上的根节点是权值最小的点。那么并查集的每个根节点就是最先减到0,使得这个连通块分裂成多个连通块的点。
f a t h e r x father_x fatherx是我在合并并查集时,x的父亲节点。如果某个点没有 f a t h e r x father_x fatherx那么就说明他是这个连通块最小的点。

代码:

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<string>
#include
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值