2021年度训练联盟热身训练赛第二场——F题:Interstellar Love
题意
给你s个点,c个连接数,求解这s个点组成的连通块的数量以及其中所包含的环的数量(孤立的点不算作连通块和环)。
思路
用并查集连接和查询,定义sig数组来标记环(sig[x]为1,表示存在一个以x为根节点的环)。连通块的数量可以通过遍历每一个结点,求根节点的个数计算即可。
AC代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int fa[10005];
int vis[10005];
int sig[10005];
int find(int x) {
if(fa[x] != x) {
fa[x] = find