以下为MLE代码
#include<iostream>
using namespace std;
int g[10001];
int find(int x){
if(g[x]==0) return x;//这里不一样
return g[x]=find(g[x]);
}
int main(){
int n,m,i,z,x,y;
cin>>n>>m;
for(i=0;i<m;i++){
cin>>z>>x>>y;
if(z==1) g[find(x)]=find(y);
else if(find(x)==find(y)) printf("Y\n");
else printf("N\n");
}
return 0;
}
以下为AC代码
#include<iostream>
using namespace std;
int g[10001];
int find(int x){
if(g[x]==x) return x;//这里不一样
return g[x]=find(g[x]);
}
int main(){
int n,m,i,z,x,y;
cin>>n>>m;
for(i=1;i<=n;i++) g[i]=i;//初始化
for(i=0;i<m;i++){
cin>>z>>x>>y;
if(z==1) g[find(x)]=find(y);
else if(find(x)==find(y)) printf("Y\n");
else printf("N\n");
}
return 0;
}
这两个递归的空间复杂度能不一样?