本文只为自己保存,侵删。
思路:并查集,检查回路。
//利用并查集搜索回路
#include<stdio.h>
const int N = 100005;
int ap[N], father[N];
int findFather(int x) {
if (x != father[x])
father[x] = findFather(father[x]);
return father[x]; //寻找x所在并查集的根节点
}
void combine(int x, int y) {
int fx = findFather(x);
int fy = findFather(y);
father[fx] = fy; //通过将一个并查集的根节点设置成