hdu 3038 How Many Answers Are Wrong(并查集)
来源:互联网 发布:windows route delete 编辑:程序博客网 时间:2024/05/22 13:34
题目链接:hdu 3038 How Many Answers Are Wrong
题目大意:略。
解题思路:并查集水题。
#include <cstdio>#include <cstring>#include <iostream>using namespace std;typedef long long ll;const int N = 200005;//const ll UFmod = 0x3f3f3f3f3f;struct UFset { int root; int parent; ll value;}U[N];int UFfind(int x) { if (U[x].root == 0) { int tmp = U[x].parent; U[x].parent = UFfind(U[x].parent);// U[x].value = (U[x].value + U[tmp].value) % UFmod; U[x].value = U[x].value + U[tmp].value; return U[x].parent; } else return x;}void UFunion(int x, int y, int p, int q, ll type) { U[p].parent += U[q].parent; U[q].parent = p; U[q].root = 0;// U[q].value = (U[x].value + type + UFmod - U[y].value) % UFmod; U[q].value = (U[x].value + type - U[y].value);}void UFinit (int n) { for (int i = 0; i <= n; i++) { U[i].parent = 1; U[i].value = 0; U[i].root = 1; }}int n, m;int main () { while (scanf("%d%d", &n, &m) == 2) { UFinit(n); int a, b, ans = 0; ll c; for (int i = 0; i < m; i++) { scanf("%d%d", &a, &b); cin >> c; a--; int p = UFfind(a), q = UFfind(b); if (p == q) { if (U[a].value + c != U[b].value) ans++; } else { UFunion(a, b, p, q, c); } } printf("%d\n", ans); } return 0;}
0 0
- HDU 3038 How Many Answers Are Wrong(并查集)
- HDU 3038 How Many Answers Are Wrong - 并查集
- hdu 3038 - How Many Answers Are Wrong(并查集)
- hdu 3038 How Many Answers Are Wrong(并查集)
- 并查集 How Many Answers Are Wrong HDU 3038
- [HDU 3038]How Many Answers Are Wrong[并查集]
- hdu-3038-How Many Answers Are Wrong(并查集)
- 并查集-HDU-3038-How Many Answers Are Wrong
- HDU 3038 How Many Answers Are Wrong(并查集)
- 【HDU 3038 How Many Answers Are Wrong】+ 并查集
- HDU-3038 How Many Answers Are Wrong 并查集
- hdoj 3038How Many Answers Are Wrong 并查集
- HDOJ 3038 How Many Answers Are Wrong 并查集
- HDU 3038 How Many Answers Are Wrong (并查集好题)(带权并查集)
- 杭电hdu 3038 how many answers are wrong 并查集求解
- HDU 3038 How Many Answers Are Wrong? (带权并查集)
- hdu 3038 How Many Answers Are Wrong (带权并查集)
- hdu 3038 How Many Answers Are Wrong【并查集的简单应用】
- 不简单的JAVA内部类
- 变量的引用类型和非引用类型的区别
- C++-虚函数,多态性,纯虚函数,抽象类
- hdu 2570 迷瘴
- poj3461Oulipo
- hdu 3038 How Many Answers Are Wrong(并查集)
- 暑期个人赛--第七场--C
- 用树状数组求区间最值
- C++-函数覆盖和隐藏
- 为什么要定义接口?
- C++-类的操作
- 30天自制操作系统之第11天 制作窗口
- 数论之欧几里得算法hdu1019
- hdu 1950 Bridging signals