记录编号 |
226447 |
评测结果 |
AAAAAAAAAA |
题目名称 |
爆炸化合物 |
最终得分 |
100 |
用户昵称 |
洛克索耶夫 |
是否通过 |
通过 |
代码语言 |
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;
}
//化合物是结点之间的“链”
//元素就是结点
//如果两个结点的根节点相同且它们之间有链则引发爆炸