题目链接:点击查看
可以说是模板题了,思路就是如果有两条路,那么第二条路一定是将两个已经连接在一起的点再次连接了。
前几天才写过,比赛的时候就又不会了,咯咯。
AC代码:
#include<bits/stdc++.h>
using namespace std;
int f[110000],visit[110000];
int find(int x){
int r = x,i,j;
while(f[r] != r)
r = f[r];
i = x;
while(f[i] != r){
j = f[i];
f[i] = r;
i = j;
}