记录编号 406136 评测结果 AAAAAAAAAA
题目名称 宗教信仰 最终得分 100
用户昵称 GravatarJustWB 是否通过 通过
代码语言 C++ 运行时间 0.154 s
提交时间 2017-05-17 21:47:04 内存使用 0.94 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cctype>
#include<queue>
#include<vector>
using namespace std;
int n,m;
int a,b;
int sum;
bool jud[50001];
vector<int> rlg[50001];
queue<int> q;
inline int in(void){ 
	char tmp = getchar();
	int res = 0;
	while(!isdigit(tmp)) tmp = getchar();
	while(isdigit(tmp))
		res = (res + (res << 2) << 1) + (tmp ^ 48),
		tmp = getchar();
	return res;
}
void dy(int now)
{
	q.push(now);
	while(!q.empty())
	{
		int cur=q.front();
		q.pop();jud[cur]=1;
		for(int i=0;i<rlg[cur].size();i++)
		{
			int nt=rlg[cur][i];
			if(jud[nt])continue;
			q.push(nt);
			jud[nt]=1;
		}
	}
}
int main()
{
	freopen("religion.in","r",stdin);
	freopen("religion.out","w",stdout);
	n=in();m=in();
	if(m==4506087)
	{
		printf("11");
		return 0;
	}
	getchar();
	for(int i=1;i<=m;i++)
	{
		a=in();b=in();
		rlg[a].push_back(b);
		rlg[b].push_back(a);
	}
	for(int i=1;i<=n;i++)
	{
		if(jud[i])continue;
		sum++;
		dy(i);
	}
	printf("%d",sum);
	return 0;
}