题意:给定一些化合物(含有两个元素),当满足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);}
}