记录编号 302792 评测结果 AAAAAAAAAA
题目名称 宗教信仰 最终得分 100
用户昵称 Gravatarliu_runda 是否通过 通过
代码语言 C++ 运行时间 1.050 s
提交时间 2016-09-04 16:59:53 内存使用 0.95 MiB
显示代码纯文本
#include<cstdio>
#include<cctype>
int read(){
    int x;char ch;
    while(ch=getchar(),!isdigit(ch));
    x=ch-'0';
    while(ch=getchar(),isdigit(ch))x=x*10+ch-'0';
    return x;
}
const int maxn=100005;
int ufs[maxn],sz[maxn];
int find(int x){
    int rt=x;
    while(rt!=ufs[rt])rt=ufs[rt];
    int y;
    while(x!=ufs[x]){
        y=ufs[x];
        ufs[x]=rt;
        x=y;
    }
    return rt;
}
void link(int a,int b){
    if(find(a)==find(b))return;
    if(sz[ufs[a]]>sz[ufs[b]]){
        sz[ufs[a]]+=sz[ufs[b]];
        ufs[ufs[b]]=ufs[a];
    }else{
        sz[ufs[b]]+=sz[ufs[a]];
        ufs[ufs[a]]=ufs[b];
    }
}
int main(){
    freopen("religion.in","r",stdin);
    freopen("religion.out","w",stdout);
    int n=read(),m=read();
    for(int i=1;i<=n;++i)ufs[i]=i,sz[i]=1;
    int ans=0,a,b;
    while(m--){
        a=read();b=read();
        link(a,b);
    }
    for(int i=1;i<=n;++i)if(ufs[i]==i)ans++;
    printf("%d\n",ans);
    fclose(stdin);fclose(stdout);
    return 0;
}