并查集
大大的梦_小小的步伐
大大的梦——小小的步伐
展开
-
POJ2236 简单并查集
POJ2236: 题目大意: 有很多台电脑,两台电脑距离在D之内才能通信,或者通过第三台电脑进行通信。判断两台电脑能否通信。 0表示修复,S表示测试。 题解:这是简单的并查集,S的时候只要判断两台电脑是不是在一个集合中就行,0将两个点合并的时候注意要判断距离是不是小于D。 #include <iostream> #include<math.h> #include...原创 2018-08-30 19:48:50 · 303 阅读 · 0 评论 -
HDU 1213 数桌子
题目大意: A认识B,B认识C,则为ABC准备一张桌子。即看能把一群人分成几堆。 题解:并查集的应用,看有几个是par[x]=x的,即看有几个根节点就行了。 #include <iostream> #include<string.h> #include<stdio.h> using namespace std; #define maxn 10000 in...原创 2018-08-30 19:57:45 · 236 阅读 · 0 评论 -
HDU3038 判断有多少个错误答案
题目: TT回答FF从Ai到Bi连续数列的和是Si,让你判断这些回答里有几个回答是不对的。 题解:这道题要不是放在并查集专题里,很难想到是用并查集去做。看了别人的博客,才稍微懂了点向量偏移的知识。 具体参考https://www.cnblogs.com/liyinggang/p/5327055.html 当初一直想不通为什么向量的值可以直接来加减,其实是因为这些是数列,数列是在一条直线上的...原创 2018-08-30 20:47:52 · 305 阅读 · 0 评论 -
POJ1161并查集 注意最后更新父节点!
题目: 题目不难,关键注意父节点的更新,因为这里不能写par[i]==x,会出错,要再更新一次根节点才行,因为前面和0连接了, 最后0有和其他点连接,0的父节点和前面就不一样了! #include<iostream> #include<string.h> using namespace std; #define maxn 30005 int par[maxn];//...原创 2018-08-30 22:24:58 · 208 阅读 · 0 评论 -
POJ1308树的判定
题目:这里让你判断是不是一棵树。 注意树的条件: 1、只有一个点的入度为0,其他都为1; 2、不能成环!! 比如1 2,2 1这样就成环了,所以不能光看入度。。 #include<iostream> #include<stdio.h> using namespace std; #define maxn 99999 int par[maxn]; int ranks[...原创 2018-09-02 14:55:45 · 194 阅读 · 0 评论