比赛 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;
}