hdu 3038 并查集
2013-11-10 13:57
176 查看
题目:给出一些询问,[l,r]的和为s,问有多少个是错的
//并查集 ,,sum[a]表示a与父亲这条路径上的和 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn = 2e5 + 5; int fa[maxn], sum[maxn]; int n, m, l, r, s; int findFa(int x){ if (x != fa[x]){ int t = fa[x]; fa[x] = findFa(fa[x]); sum[x] += sum[t]; } return fa[x]; } int main(){ while (~scanf("%d%d", &n, &m)){ for (int i = 0; i <= n; ++i){ fa[i] = i; sum[i] = 0; } int ans = 0; while (m--){ scanf("%d%d%d", &l, &r, &s); l --; int pa = findFa(l), pb = findFa(r); if (pa == pb){ if (sum[r] - sum[l] != s) ans++; } else { fa[pb] = pa; sum[pb] = sum[l] - sum[r] + s; } } printf("%d\n", ans); } return 0; }
相关文章推荐
- hdu 3038 How Many Answers Are Wrong(带权并查集)
- kuangbin专题五: D - How Many Answers Are Wrong HDU - 3038 (带权并查集)
- HDU 3038 带权并查集,区间
- HDU 3038 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 带权并查集 dfs过程中维护变量
- hdu 3038 How Many Answers Are Wrong(带权并查集+树的性质)
- 类似区间计数的种类并查集两题--HDU 3038 & POJ 1733
- 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 带权并查集判错(详解)
- HDU 3038 How Many Answers Are Wrong (并查集)---并查集看不出来系列-1
- HDU-3038 How Many Answers Are Wrong 并查集
- hdu 3038 How Many Answers Are Wrong(并查集)
- HDU-3038 How Many Answers Are Wrong 带权并查集