首页 > 代码库 > UVALive - 3644X-Plosives(并查集)
UVALive - 3644X-Plosives(并查集)
题目:UVALive - 3644X-Plosives(并查集)
题目大意:给出K个简单的化合物,正好包含K种元素,那么将它们装车的时候,已经拿到的化合物再来的时候就应该拒绝装车,安全起见,然后给你装车的化合物列表,问你需要拒绝装车的次数。
解题思路:并查集。将已经装过的化合物记录下来,那么如果下次的化合物如果已经在集合中了,就说明需要拒绝装车。
代码:
#include <cstdio> #include <cstring> const int maxn = 1e5 + 5; int p[maxn]; void init () { for (int i = 0; i < maxn; i++) p[i] = i; } int getParent(int a) { return a == p[a] ? a: p[a] = getParent (p[a]); } int main () { int a, b; int ans; while (scanf ("%d", &a) == 1) { ans = 0; init(); do { scanf ("%d", &b); int q1 = getParent(a); int q2 = getParent(b); if (q1 == q2) ans++; else p[q1] = q2; } while (scanf ("%d", &a) && a != -1); printf ("%d\n", ans); } return 0; }
UVALive - 3644X-Plosives(并查集)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。