UVA 1160 - X-Plosives
题意:每次给定一个两个元素a,b组成的化合物,如果车上有k个化合物,又包含了k个元素,就会形成爆炸物,所以每次装上去前要检查一下,输入一些化合物,求不能装的个数
思路:并查集的水题,在同一集合了就不能装,如果不在就可以装
代码:
#include <cstdio>
#include <cstring>
const int N = 100005;
int x, y, parent[N];
int find(int x) {
return x == parent[x] ? x : parent[x] = find(parent[x]);
}
int main() {
while (~scanf("%d", &x)) {
int cnt = 0;
for (int i = 0; i < N; i++)
parent[i] = i;
while (x != -1) {
scanf("%d", &y);
x = find(x); y = find(y);
if (x == y) cnt++;
else parent[x] = y;
scanf("%d", &x);
}
printf("%d\n", cnt);
}
return 0;
}