【带权并查集】如果你也WA30
查看原帖
【带权并查集】如果你也WA30
386892
REMAC楼主2023/11/12 12:17

几种常见错误

//正确
int Find(int u) {
	if(fa[u]) {
		int f=fa[u];
		fa[u]=Find(fa[u]);
		w[u]=(w[f]+w[u]+mod)%mod;
		return fa[u];
	}
	return u;
}

//错误
int Find(int u) {
	if(fa[u]) {
		fa[u]=Find(fa[u]);
		w[u]=(w[fa[u]]+w[u]+mod)%mod;
      		//!!!此处:w 所存储的是与其直接父亲的关系,而前面更新后的 fa[u] 已经变成祖宗了 
		return fa[u];
	}
	return u;
}
2023/11/12 12:17
加载中...