记录编号 226447 评测结果 AAAAAAAAAA
题目名称 爆炸化合物 最终得分 100
用户昵称 Gravatar洛克索耶夫 是否通过 通过
代码语言 C++ 运行时间 0.239 s
提交时间 2016-02-18 07:20:22 内存使用 0.60 MiB
显示代码纯文本
#include<cstdio>
using namespace std;
 
int a,b,ans=0;
int root[100100]={0};
 
inline int FindRoot(int a)
{
	if(root[a]!=a)	root[a]=FindRoot(root[a]);
	return root[a];
}

inline int Union(int a, int b)
{
	a=FindRoot(a);
	b=FindRoot(b);
	root[b]=a;
}
 
int main()
{
	freopen("explosion.in","r",stdin);
	freopen("explosion.out","w",stdout);
	for(int i=0;i<=100000;i++){
		root[i]=i;
	}
	while(1){
		scanf("%d",&a);
		if(a==-1){
			printf("%d\n",ans);
			return 0;
		}
		scanf("%d",&b);
		if(FindRoot(a)==FindRoot(b))	ans++;
		else	Union(a, b);
	}
	return 0;
}
//化合物是结点之间的“链”
//元素就是结点
//如果两个结点的根节点相同且它们之间有链则引发爆炸