| 比赛 | 
    9.6 | 
    评测结果 | 
    AWWAWWWWTW | 
    | 题目名称 | 
    宗教信仰 | 
    最终得分 | 
    20 | 
    | 用户昵称 | 
    对立猫猫对立 | 
    运行时间 | 
    2.577 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    3.35 MiB  | 
    | 提交时间 | 
    2024-09-06 20:19:38 | 
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int n,m;
int f[500005];
void init()
{
	for(int i = 1;i <= n;i++)
	{
		f[i] = i;
	}
	return;
}
int get(int x)
{
	while(f[x] != x) x = f[x];
	return x;
}
void merge(int x,int y)
{
	f[max(x,y)] = min(x,y);
	return;
}
int main()
{
	freopen("religion.in","r",stdin);
	freopen("religion.out","w",stdout);
	cin >> n >> m;
	init();
	for(int i = 0;i < m;i++)
	{
		int a,b;
		cin >> a >> b;
		if(get(a) != get(b)) merge(a,b);
	}
	long long ans = 0;
	for(int i = 1;i <= n;i++)
	{
		if(f[i] == i) ans++;
	}
	cout << ans << endl;
	return 0;
}