路径压缩时,加个else为什么会出现RE
查看原帖
路径压缩时,加个else为什么会出现RE
33350
I_love_you_li_an楼主2021/4/20 09:28
#include<bits/stdc++.h>
using namespace std;
int n, m;
int fa[10005];
int x, y, z;
void init(){
	for(int i=1; i<=n; i++)fa[i]=i;
}
int find_fa(int x){
	if(x!=fa[x])fa[x]=find_fa(fa[x]);
	return fa[x];//如果此处多加else 就会出现RE,WHY?WHY?WHY?
}
int main()
{
	scanf("%d%d", &n, &m);
	init();
	while(m--){
		scanf("%d%d%d", &z, &x, &y);
		int fx=find_fa(x), fy=find_fa(y);
		if(z==1){
			if(fx!=fy)fa[fx]=fy;
		}
		if(z==2){
			if(fx!=fy)printf("N\n");
			else printf("Y\n");
		}
	}
	return 0;
}
并查集递归中(如代码注释处)加上else会出现RE,

WHY?

WHY?

WHY?

2021/4/20 09:28
加载中...