http://acm.hdu.edu.cn/showproblem.php?pid=3038
就是给你x,y,z让[x,y]的和为z;
问顺序下去有多少错;
这可以看出并查集,就是y比x-1大z
然后如果y,z-1在同一个集合,直接验证答案;
不然就把他们合起来;
为了路径压缩,我们就要链接x-1,y的祖先;
当然我们链接x-1,y祖先的时候要保证x-1,y的距离为z;
所以这个时候有两种方法;
xx=get(x-1)
yy=get(y)
fa[xx]=yy和fa[yy]=xx;是不同的;
因为这里是边权并查集所以有一个g[]数组
怎么说呢,你们自己理解一下;

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
int fa[1000001],g[1000001];
int ff,n,m,x,y,z,nn,ans;
int get(int x){if(fa[x]==x)return x;int f=get(fa[x]);g[x]+=g[fa[x]];fa[x]=f;return f;
}
void merge(int xx,int yy,int z){if(xx<yy){fa[yy]=xx;g[yy]=g[x]+z-g[y];}else{fa[xx]=yy;g[xx]=g[y]-g[x]-z;}
}
int main()
{
while(scanf("%d%d",&n,&m)==2){for(int i=0;i<=n;i++)fa[i]=i;memset(g,0,sizeof g);ans=0;for(int i=1;i<=m;i++){scanf("%d%d%d",&x,&y,&z);x--;int xx=get(x);int yy=get(y);if(xx==yy)if(g[y]-g[x]!=z)ans++;else;else merge(xx,yy,z);}printf("%d\n",ans);
}
} 

我那个程序merge的时候,采取的方法是把xx,yy里面大的接到小的后面;这样的话,g[]里面一定是非负数;
如果把小的接到大的话,g[]里面会出现负数;
但好像出现负数没什么关系,都会抵消掉的;

转载于:https://www.cnblogs.com/largecube233/p/6797925.html

并查集-hdu3083-How Many Answers Are Wrong相关推荐

  1. 【转】并查集MST题集

    转自:http://blog.csdn.net/shahdza/article/details/7779230 [HDU] 1213 How Many Tables 基础并查集★ 1272 小希的迷宫 ...

  2. How Many Answers Are Wrong HDU - 3038(带权并查集经典题,满满的都是注释)

    How Many Answers Are Wrong HDU - 3038  点击打开链接 题意:现在有n个数(你并不知道这n个数是什么),m次查询,每次查询给出u,v,w.表示从第u个数到第v个数的 ...

  3. How Many Answers Are Wrong HDU - 3038(带权并查集)

    TT and FF are - friends. Uh- very very good friends -________-b FF is a bad boy, he is always wooing ...

  4. 【HDU - 3038】How Many Answers Are Wrong (带权并查集--权为区间和)

    题干:() TT and FF are ... friends. Uh... very very good friends -________-b FF is a bad boy, he is alw ...

  5. POJ1703 Find them, Catch them 并查集

    点击打开链接 Find them, Catch them Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 50757   Ac ...

  6. POJ 并查集 题目汇总 ——czyuan原创(转)

    继续数据结构的复习,本次的专题是:并查集. 并查集,顾名思义,干的就是"并"和"查"两件事.很多与集合相关的操作都可以用并查集高效的解决. 两个操作代码:    ...

  7. Find them, Catch them POJ - 1703(种类并查集)

    题意: 在这个城市里有两个黑帮团伙,现在给出N个人,问任意两个人他们是否在同一个团伙 1.输入D x y代表x于y不在一个团伙里 2.输入A x y要输出x与y是否在同一团伙或者不确定他们在同一个团伙 ...

  8. 【CodeForces - 1131F 】Asya And Kittens(并查集,思维)

    题干: Asya loves animals very much. Recently, she purchased nn kittens, enumerated them from 11 and nn ...

  9. 【POJ - 1703】Find them, Catch them(带权并查集之--种类并查集 权为与父节点关系)

    题干: Find them, Catch them Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 36176   Accep ...

最新文章

  1. error_reporting()
  2. Java多线程与并发控制
  3. 当不能用for等循环时,可以考虑递归
  4. HDU3400+三分
  5. java生成小图片_JAVA生成缩略小图片类
  6. 利用redis保存验证码并设置过期时间
  7. java编写计算器实现cancel_用Java编写的简易计算器
  8. [leetcode]376. 摆动序列
  9. c++语言boolean例子,C++语言——99个常见编程编程 学习小结
  10. html倒计时代码执行操作,JS倒计时两种实现方式代码实例
  11. 图像特征提取(二)——HOG特征
  12. Linux下Tomcat官网下载安装详细教程+域名绑定访问
  13. 天才小毒妃 第943章 小东西很努力
  14. (BT)工作笔记(1)
  15. 登录onedrive显示无法连接服务器,Win10专业版系统下OneDrive无法登录提示连接到OneDrive时出现问题怎么办...
  16. 微信公众平台消息储存mysql php_使用PHP进行微信公众平台开发的示例
  17. 名帖220 赵孟頫 行书《光福寺重建塔记》
  18. Python爬取租房数据实例,据说可以入门爬虫的小案例!
  19. 中原银行实时风控体系建设实践
  20. 【面试招聘】超强整理,非科班小硕的进击之路

热门文章

  1. php 字符串替换 正则表达式,PHP中一些可以替代正则表达式函数的字符串操作函数...
  2. androidx和android的区别,【译】使用AndroidX代替Android支持库
  3. java不会自动提示_eclispe中打点不会提示的解决方法,以及自动补全
  4. asppython份额_2019年7月编程语言榜单公布:Python第一 份额保持较大幅度增长
  5. python行为识别_牛!Python 也能实现图像姿态识别溺水行为了
  6. Browser Security-同源策略、伪URL的域
  7. 用GDB调试程序(七)
  8. Facebook高管:我们是科技公司 不是媒体公司
  9. iOS10 推送通知 UserNotifications
  10. bom头解释方法和去掉方法