P1536
查看原帖
P1536
1385468
msh20204401楼主2024/12/23 21:07

交了十几次,5RE+5MLE 为什么?请各位神犇讲解

#include<bits/stdc++.h>
using namespace std;
int f[1111111],n,m,p,x,y;
int find(int x){
   if(x!=f[x]){
       f[x]=find(f[x]);
   }
   else
   return f[x];
}
void hb(int x,int y){
    int r1=find(x);
    int r2=find(y);
    f[r1]=r2;
    return ;
}
int main(){
    while(true){
    int ans=0;
    scanf("%d",&n);
    if(n==0){
        return 0;
    }
    for(int i=1;i<=n;i++){
        f[i]=i;
    }
    scanf("%d",&m);
    for(int i=1;i<=m;i++){
        scanf("%d%d",&x,&y);
        hb(x,y);
    }
    for(int i=1;i<=n;i++){
        if(find(i)==i){
            ans++;
        }
    }
    printf("%d\n",ans-1);
    }
    return 0;
}
2024/12/23 21:07
加载中...