比赛 20120712 评测结果 AAAAAAAAAA
题目名称 爆炸化合物 最终得分 100
用户昵称 Citron酱 运行时间 0.271 s
代码语言 C++ 内存使用 0.67 MiB
提交时间 2012-07-12 10:10:37
显示代码纯文本
#include <cstdio>

#define I_F "explosion.in"
#define O_F "explosion.out"

const long MAXn=100000+1;

long c[MAXn];
long ans=0;

void Prework();
long Root(const long&);
inline void Union(const long&, const long&);

int main()
{
	long a,b;
	Prework();
	freopen(I_F,"r",stdin);
	scanf("%ld",&a);
	while (a>=0)
	{
		scanf("%ld",&b);
		if (Root(a)!=Root(b))
			Union(a,b);
		else
			++ans;
		scanf("%ld",&a);
	}
	freopen(O_F,"w",stdout);
	printf("%ld\n",ans);
	return 0;
}

void Prework()
{
	for (long i=0; i<MAXn; ++i)
		c[i]=i;
}

long Root(const long &x)
{
	if (x==c[x])
		return x;
	c[x]=Root(c[x]);
	return c[x];
}

inline void Union(const long &a, const long &b)
{
	c[Root(b)]=Root(a);
}