为什么不初始化g[i]=i就会MLE?
查看原帖
为什么不初始化g[i]=i就会MLE?
924263
zvagowy楼主2023/8/17 08:26

以下为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;
}

这两个递归的空间复杂度能不一样?

2023/8/17 08:26
加载中...