记录编号 |
227454 |
评测结果 |
AAAAAAAAAA |
题目名称 |
爆炸化合物 |
最终得分 |
100 |
用户昵称 |
YGOI_真神名曰驴蛋蛋 |
是否通过 |
通过 |
代码语言 |
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;
}