How Many Answers Are Wrong HDU - 3038(带权并查集经典题,满满的都是注释)
1 #include<iostream> 2 #include<cstring> 3 #include<algorithm> 4 #include<cstdio> 5 using namespace std; 6 const int Max=200005; 7 typedef struct node//par表示父亲节点,relation表示关系,即权值 8 { 9 int par,relation; 10 }node; 11 node p[Max]; 12 int n,m,ans; 13 void init()//初始化,父亲为自己,自己到自己的距离为0 14 { 15 ans=0; 16 for(int i=1;i<=n;i++){ 17 p[i].par=i; 18 p[i].relation=0; 19 } 20 } 21 int Find(int x)//路径压缩 22 { 23 if(x==p[x].par) 24 return x; 25 int tmp=p[x].par; 26 p[x].par=Find(tmp); 27 p[x].relation+=p[tmp].relation;//关系域的转移方程一 28 return p[x].par; 29 } 30 void unite(int x,int y,int relation) 31 { 32 int root1=Find(x); 33 int root2=Find(y); 34 if(root1!=root2){//如果根不相同,那么,把root2连到root1上即合并操作 35 p[root2].par=root1; 36 p[root2].relation=p[x].relation+relation-p[y].relation;//关系域的转移方程二 37 } 38 else{//如果根相同,则不用合并,那么进行判断,看给出的区间的和是否有冲突,有的话ans++ 39 if(p[y].relation-p[x].relation!=relation) 40 ans++; 41 } 42 } 43 int main() 44 { 45 while(~scanf("%d%d",&n,&m)){ 46 int u,v,w; 47 init(); 48 for(int i=0;i<m;i++){ 49 scanf("%d%d%d",&u,&v,&w); 50 u-=1;//从第u个数到第v个数的和理解为,第u-1个数到v个数之间的和 51 unite(u,v,w); 52 } 53 printf("%d\n",ans); 54 } 55 return 0; 56 }
View Code
转载于:https://www.cnblogs.com/Levi-0514/p/9042485.html
How Many Answers Are Wrong HDU - 3038(带权并查集经典题,满满的都是注释)相关推荐
- HDU 3047 带权并查集
点击打开链接 题意:给了n个人和m个关系,关系为a,b,x,意思是b的位置大于a的位置x,问条件依次下去的矛盾的条件的个数 思路:第一个带权的并查集,倒不是很难,它的算法思想非常给力,若两个不再同一集 ...
- [NOI2002] 银河英雄传说(带权并查集好题)
题解: 用两个变量来维护: 1.sz[i]维护第i列元素的个数 2.pre[x]维护第x元素到当前队首的距离. 在并查集是不断维护这两个值. 至于如何维护看下图和文字解释 当然,这样维护还是不够的,对 ...
- 2017乌鲁木齐ICPC: I. A Possible Tree(带权并查集)
I. A Possible Tree Alice knows that Bob has a secret tree (in terms of graph theory) with n nodes wi ...
- 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 ...
- Valentine's Day Round hdu 5176 The Experience of Love [好题 带权并查集 unsigned long long]
传送门 The Experience of Love Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Ja ...
- HDU 3047 Zjnu Stadium (带权并查集)
链接: http://acm.hdu.edu.cn/showproblem.php?pid=3047 题目: Problem Description In 12th Zhejiang College ...
- HDU 5176 The Experience of Love 带权并查集
The Experience of Love Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/O ...
- 带权并查集 HDU - 3047
题意: 一圈座位有n个,给出m组序号之间的关系,比如,1 2 150 代表2号坐在1号位置序号+150,看m组数据有多少组冲突的. 思路: 带权并查集模板. #include<stdio.h&g ...
- 【POJ - 1703】Find them, Catch them(带权并查集之--种类并查集 权为与父节点关系)
题干: Find them, Catch them Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 36176 Accep ...
最新文章
- Java多线程闲聊(四):阻塞队列与线程池原理
- Intger To Roman
- 查找一段文字中最长的重复字串 – 编程珠玑(排过序的后缀数组的应用)
- 实例工厂配置bean
- Mysql 数据库学习笔记02 编程
- OpenCV与AIPCV库——学习笔记(一)
- Windows下给Git配置SSH
- 【前端】相信你会用到的一篇笔记---CSS篇(1)
- Windows Server 2012 安装MySQL服务器感悟
- win32com excel转pdf
- fanuc系统屏蔽服务器,FANUC伺服轴的屏蔽方法
- 验证性因子分析(三)
- 大佬们用代码写的故事
- Ubuntu安装opencv的扩展模块-viz模块
- Quartus prime工程中各种文件的后缀及意义
- Crypto-Enigma密码机原理
- grub4dos引导Linux失败,Grub4dos引导Ubuntu
- The type 类名 is already defined
- 全网最全的qt连接mysql的应用,学生信息管理系统(展示全部代码)
- 2023年基建工程(设计规划施工)经验分享,超多干货
热门文章
- leetcode 110. 平衡二叉树
- 99.两个时钟不同步的设备怎么通信?
- 2021年中国科技的脚步依旧不停 我们将走得更广更深更远
- 要继续使用 App Engine 标准应用,您必须在 2021 年 1 月 31 日之前添加付款信息。
- 蒙面也能识别?俄罗斯开发新技术,伪装犯罪将在监控下无处遁行
- Facebook表示将不会默认开启人脸识别功能,被罚怕了?
- 计算机组成原理知识点概叙--计算机系统简介
- linux里的dd权限不够怎么办,Linux dd 遇到 容量不足 的 resize 解法
- 006_JSONObject对象公共方法
- 007_Curator框架二