如果你出现了 10pts 的情况,请检查一下你的并查集的合并顺序。我的代码就是因为这个原因一直挂。
鉴于这个错误比较容易被忽略(毕竟平时合并顺序不重要),特发此贴。
原先:(10pts)
inline void merge(int l, int r) {
l = find(l); r = find(r);
fa[l] = r; siz[r] += siz[l];
}
改为:(100pts)
inline void merge(int l, int r) {
l = find(l); r = find(r);
fa[r] = l; siz[l] += siz[r];
}
(仅作示意)