一开始我的思路是每次join的时候修改计数器
后来想到用类似桶的思路,就是
for (int i = 1; i <= n; i++) {
// if (fa[i] = i) ans++;
t[find(i)]=1;
}
for (int i = 1; i <= n; i++) {
if(t[i]) ans++;
}
但是我觉得这个很难受, 想尝试更好的解法, 看题解大多数都是用桶的 但是发现了一个题解是
for(int j=1;j<=n;j++)
{
if(pre[j]==j) ans++;
}
然后我就用了代码里面, 遗憾的是 每次输出都比正确答案多2