比赛 |
20160902 |
评测结果 |
AWWAWTWWTW |
题目名称 |
宗教信仰 |
最终得分 |
20 |
用户昵称 |
ミント |
运行时间 |
2.102 s |
代码语言 |
C++ |
内存使用 |
0.51 MiB |
提交时间 |
2016-09-02 21:03:19 |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <set>
using namespace std;
const int maxn = 50000 + 100;
int ufs[maxn];
int n, m, kount = 0;
inline int find(int x){
if(ufs[x]!=x)ufs[x] = find(ufs[x]);
return ufs[x];
}
inline void merge(int x, int y){
if(y>x)swap(x, y);
ufs[find(x)] = find(y);
return ;
}
int main(){
freopen("religion.in", "r", stdin);
freopen("religion.out", "w", stdout);
for(int i=0;i<maxn;i++)ufs[i] = i;
cin>>n>>m;
while(m--){
int a, b;cin>>a>>b;
//if(find(a)!=find(b))
merge(a, b);
}
set<int> s;
for(int i=1;i<=n;i++)s.insert(ufs[i]);
//for(int i=1;i<=n;i++)cout<<ufs[i]<<' ';cout<<endl;
cout<<s.size()<<endl;
return 0;
}