AC了, 但还是想问不使用类似桶的思路怎么查有多少个集合
查看原帖
AC了, 但还是想问不使用类似桶的思路怎么查有多少个集合
320697
AMIRIOX無暝楼主2020/8/12 12:58

一开始我的思路是每次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

  • 为什么这种方式会多2?
  • 有没有不用桶的方式?
2020/8/12 12:58
加载中...