记录编号 227454 评测结果 AAAAAAAAAA
题目名称 爆炸化合物 最终得分 100
用户昵称 GravatarYGOI_真神名曰驴蛋蛋 是否通过 通过
代码语言 C++ 运行时间 0.105 s
提交时间 2016-02-18 17:18:04 内存使用 4.13 MiB
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<queue>
#include<functional>
#include<bitset>
#include<pthread.h>
void reader(int &x)
{
	x=0;char c=0;
	do{c=getchar();}while((c<'0'||c>'9')&&c!='-');
	if(c!='-')do{x=x*10+c-'0';c=getchar();}while(c>='0'&&c<='9');
	else x=-1,getchar();
}
struct InSet{
	int Set[1000010];
	inline void InSeter(int n){for(int i=1;i<=n;i++){Set[i]=i;}}
	inline int find(int i)
	{
		if(i!=Set[i])Set[i]=find(Set[i]);
		return Set[i];
	}
	inline void  Toset(int a,int b)
	{
		a=find(a);
		b=find(b);
		if(a!=b)Set[a]=b;
	}
	inline bool judge(int a,int b)
	{
		return find(a)==find(b);
	}
}seter;
int main()
{
	freopen("explosion.in","r",stdin);
	freopen("explosion.out","w",stdout);
	int a,b,p=0;
	seter.InSeter(1e6);
	while(1)
	{
		reader(a);
		if(a==-1)break;
		reader(b);
		if(seter.judge(a,b)){p++;}
		else{seter.Toset(a,b);}
	}
	printf("%d",p);
	fclose(stdin);fclose(stdout);
	return 0;
}