hdu 3038
来源:互联网 发布:有意识的人工智能 编辑:程序博客网 时间:2024/06/06 18:26
一道并查集,有对于我比较复杂的地方。看了他们的题解强行理解。利用并查集,用sum【集合的尾数】保存集合的和,合并的时候选小的(左)为父节点。这样遇到边界一样的集合,就可以判断是否冲突。
#include<cstdio>const int maxn = 200000 + 5;int sum[maxn];int pre[maxn], ans;void init(int n){ for(int i = 0; i <= n; i++) { sum[i] = 0; pre[i] = i; } ans = 0;}int root(int x){ if(x == pre[x]) return x; int t = pre[x]; pre[x] = root(pre[x]); sum[x] += sum[t]; return pre[x];}void merge_set(int s, int e, int v){ int fx = root(s); int fy = root(e); if(fx == fy) { if(sum[e] != sum[s] + v) ans++; return; } else if(fx > fy) { sum[fx] = sum[e] - v - sum[s]; pre[fx] = fy; } else { sum[fy] = sum[s] + v - sum[e]; pre[fy] = fx; }}int main(){ int n, m; while(scanf("%d%d", &n, &m) == 2) { init(n); for(int kase = 1; kase <= m; kase++) { int t1, t2, t3; scanf("%d%d%d", &t1,&t2, &t3); merge_set(t1 - 1, t2, t3); } printf("%d\n", ans); } return 0;}
阅读全文
0 0
- hdu 3038
- HDU 3038
- hdu 3038
- 3038(HDU)
- HDU 3038
- hdu 3038
- HDU 3038
- HDU---3038(并查集好题)
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- 记第一次打codeforces
- 高CPU业务场景下的任务分发方案Gearman搭建一览
- hdu 2036 改革春风吹满地 求多边形面积问题
- 支付宝小程序转微信小程序工具
- 一则安全漏洞缺陷的格式参考(赛门铁克)
- hdu 3038
- 一、log4j环境搭建
- 软件安全测试·DoS·HTTP慢速攻击
- 开源 App
- Solr6.6一天总结(一)环境搭建
- LintCode:M-最长无重复字符的子串
- Android基础-初识SQLite 1-1 sqlite数据库 以及 SQL语法 介绍
- Python-读取目录所有文件的文件名并保存到txt文件
- OWASP Top 10 2017-RC1-4e2d65877248-V1.0.pdf