关于这个题目的题解的疑惑
查看原帖
关于这个题目的题解的疑惑
294562
EDqwq楼主2022/5/9 17:53
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int N=100005;
int n,k,x,y,ans,f[N];

int find (int x) {
    return f[x]==x?x:find(f[x]);
}
//并查集基本操作:找爸爸。不会的自己上网查

int main () {
    scanf ("%d%d",&n,&k);
    for(int i=1;i<=n;i++) f[i]=i;
    //一开始,每个食物是自己的爸爸(怪怪的)
    while(k--){
        scanf ("%d%d",&x,&y);
        int r1=find(x),r2=find(y);
        if (r1!=r2)
			f[r1]=r2;
        else ans++;
        //如上述文字
    }
    printf("%d\n",ans);
    //完结撒花
	return 0;
}

这个代码实现的貌似是按照输入顺序安排,但为什么这样最优?

2022/5/9 17:53
加载中...