题意:给定一些化合物(含有两个元素),当满足k个化合物且有k个元素的时候会发生爆炸,问多少个化合物是不能装车的。
思路:并查集的简单应用。实际上满足条件的时候是一个环,因此用并查集简单判环即可。
code:
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int fa[N];
int getfa(int x){return fa[x]!=x?fa[x]=getfa(fa[x]):x;}
int main()
{
int x,y;
while (~scanf("%d",&x)){
for (int i=0;i<N;i++) fa[i]=i;
int res=0;
while (x!=-1){
scanf("%d",&y);
x=getfa(x);
y=getfa(y);
if (x==y) ++res;
else fa[x]=y;
scanf("%d",&x);
}
printf("%d\n",res);
}
}