0
点赞
收藏
分享

微信扫一扫

UVA 1160 X-Plosives【并查集】


题目链接:
​​​https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3601​​

题意:
每次给定一个两个元素a,b组成的化合物,如果车上有k个化合物,又包含了k个元素,就会形成爆炸物,所以每次装上去前要检查一下,输入一些化合物,求不能装的个数

代码:

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string.h>
#include <queue>
#include <stack>
#include <map>

using namespace std;

int fa[1000010];

int fd(int x)
{
if (fa[x] == -1) return x;
else return fa[x] = fd(fa[x]);
}

int main()
{
int a, b;
while (~scanf("%d", &a))
{
memset(fa, -1, sizeof(fa));
int ans = 0;
while (a != -1)
{
scanf("%d", &b);
int aa = fd(a);
int bb = fd(b);
if (aa == bb) ans++;
else fa[aa] = bb;
scanf("%d",&a);
}
printf("%d\n", ans);
}
return 0;
}


举报

相关推荐

0 条评论