题意:有一些化学物品,有a元素和b元素组成,如果组成危险化学物品就不能装车,求没有装车的化学物品数。
题解:简单的并查集,直接模板。
//#define YE
#include<stdio.h>
#include<string.h>
int fa[100005];
void init()
{
int i;
for(i=0;i<=100000;i++)
{
fa[i]=i;
}
}
int find(int x)//并查集+路径压缩
{
if(x!=fa[x])
{
fa[x]=find(fa[x]);
}
return fa[x];
}
int main()
{
#ifdef YE
freopen("123","r",stdin);
#endif
init();
int a,b;
int sum=0;
while(scanf("%d",&a)!=EOF)
{
init();
sum=0;
while(a!=-1)
{
scanf("%d",&b);
int af=find(a);
int bf=find(b);
if(af!=bf)
{
fa[bf]=af;
}
else
{
sum++;
}
scanf("%d",&a);
}
printf("%d\n",sum);
}
return 0;
}