并查集
ramay7
Life is not short,but float.
展开
-
POJ 2236 Wireless Network(并查集)
题目链接: POJ 2236 Wireless Network 题意:有N台损坏了电脑,给出N台电脑的坐标,已知当两个修好的电脑间的距离小于等于d时,两台修好的电脑可以连通。 两台连通的电脑之间可以有若干台电脑作为桥梁。 有两种操作:O,P:修好第P台电脑 S P,Q:询问第P台电脑和第Q台电脑是否连通。 对于每一条询问如果连通输出“SUCCESS”,未连通输出“FAIL”。 分析:原创 2016-03-18 11:23:44 · 347 阅读 · 0 评论 -
HDU 4313 Matrix(并查集/破坏边使得k个点两两不连通的最少代价)
题目链接: HDU 4313 Matrix 题意: 有nn个点和n−1n-1条无向边,需要破坏一些边使得给定的kk个点两两不连通,求最少的破坏代价? 数据范围:n≤105n \leq 10^5 分析;#include <stdio.h> #include <string.h> #include <algorithm> #include <math.h> #include <climi原创 2016-08-03 13:14:09 · 577 阅读 · 0 评论 -
HDU 1811 Rank of Tetris(并查集+拓扑排序)
题目链接; HDU 1811 Rank of Tetris 题意: nn个人,编号0−n−10-n-1。mm组关系可以是:A>B,A=B,A<BA>B,A=B,A<B。 问最终的关系是否确定或者出现冲突? 数据范围:0≤N≤10000,0≤M≤200000\leq N\leq 10000,0\leq M\leq 20000 分析: 能想到并查集把A=BA=B的情况合并就好做了。#inc原创 2016-07-18 22:35:01 · 491 阅读 · 0 评论 -
POJ 1308 Is It A Tree?(判断是否是一棵树)
题目链接: POJ 1308 Is It A Tree? 题意: 给出若干点对a, b,表示a指向b,以0 0结尾。判断这些点对能否组成一颗树。 分析: ①:空树是一棵树 ②:点对中不能出现自己指向自己,这时不是一棵树 ③:不能对于每一个点最多只有一个点指向它,而一个点可以指向多个点,这里可以用并查集判断。 主要是考虑a->b是否有b->a的情况。 ④:是否是森林,也就是有多个根节原创 2016-03-24 11:51:17 · 557 阅读 · 0 评论 -
ZOJ 3261 Connections in Galaxy War(逆向处理)
题目链接: ZOJ 3261 Connections in Galaxy War 题意: 有n个点,每个点有权值,然后给出m条无向边。有两种操作: query a.表示从a出发的能到达的所有点权值最大的点的编号(相同取编号最小,而且权值要比自己大) 如果存在这样的点输出最大权值,否则输出-1. destory a,b 表示删除连接a,b的边 按照操作输入顺序,输出每次查询的结果。两个测原创 2016-03-24 11:49:00 · 410 阅读 · 0 评论 -
PPOJ 2492 A Bug's Life(分层并查集)
题目链接: POJ 2492 A Bug’s Life 题意: 有n个昆虫,一般只有性别相异的昆虫才可配对,如果是一只同性恋昆虫,那么它和同性、异性均可配对。 现在给出m组配对关系,问这n个昆虫中是否含有同性恋昆虫? 分析: 由于不知道每只昆虫的性别,那么可以把两种情况都考虑。第i只昆虫性别的反面用i+n表示, 那么对于每对昆虫a,b,要把a和b+n以及a+n和b分别放在同一集合。原创 2016-03-18 11:47:16 · 707 阅读 · 0 评论 -
HDU 1272 小希的迷宫(并查集)
题目链接: ZOJ 3261 Connections in Galaxy War 题意: 有n个点,每个点有权值,然后给出m条无向边。有两种操作: query a.表示从a出发的能到达的所有点权值最大的点的编号(相同取编号最小,而且权值要比自己大) 如果存在这样的点输出最大权值,否则输出-1. destory a,b 表示删除连接a,b的边 按照操作输入顺序,输出每次查询的结果。两个测原创 2016-03-19 10:50:10 · 283 阅读 · 0 评论 -
POJ 2912 Rochambeau(枚举+加权并查集)
题目链接: POJ 2912 Rochambeau/* 题意: 有n个人玩石头剪刀布,有且只有一个裁判。除了裁判每个人的出拳形式都是一样的。 a<b表示b打败a,a=b表示a和b出拳一样,平手。a>b表示a打败b。 给出m个回合的游戏结果,问能否判断出谁是裁判?如果能还要输出是在哪个回合之后判断出谁是裁判。分析:枚举和加权并查集。 对于每个人假设其为裁判,然后去掉所有和他有关的匹配,判断是否会出现原创 2016-03-18 11:51:22 · 358 阅读 · 0 评论 -
POJ 1984 Navigation Nightmare(加权并查集)
题目链接: POJ 1984 Navigation Nightmare 题意: 平面上有n个点,每个点可以在东西南北四个方向上与另外一个点连接,(每个点最多和四个直接连通) 然后有m条语句用以表示这n个点之间的位置关系:a,b,d,S表示a点在b点南方,距离为d(N,W,E分别表示北,西,东) 接着有k条语句来查询:a,b,t:由m条语句中的前t条能否得出a,b两点间的哈夫曼距离, 如果原创 2016-03-18 11:45:12 · 347 阅读 · 0 评论 -
POJ 1733 Party Game(加权并查集+hash)
题目链接: POJ 1733 Party Game 题意: 有n个数字,每个数字非0即1,有m条语句,每条语句:l,r,even/odd,表示l到r区间上有奇/偶个1. 问最多前多少条语句是正确的? 分析: 和POJ 3038 How many answers are wrong? http://acm.hdu.edu.cn/showproblem.php?pid=3038 类似。 用原创 2016-03-18 11:41:01 · 532 阅读 · 0 评论 -
POJ 1182 食物链(分层并查集)
题目链接: POJ 1182 食物链 题意: 有n个动物,编号1–n,每个动物属于A,B,C三种中的一种,并且A种动物吃B种动物,B种动物吃C种动物,C种动物吃A种动物。 有K条语句。格式是:d,x,y。 d=1时表示x和y是属于同一种类, d=2时表示x吃y。 这条语句如果满足下列条件之一就是错误的语句: 1) 当前的话与前面的某些真的话冲突,就是假话; 2) 当前的话中X或Y比原创 2016-03-18 11:33:38 · 444 阅读 · 0 评论 -
POJ 3038 How Many Answers Are Wrong(加权并查集)
题目链接: POJ 3038 How Many Answers Are Wrong题意: n表示n个数字,编号1–n,然后有m个区间[l,r]和该区间和s, 问在这m个区间中有多少个区间和是不正确的? 如果不正确就忽略该区间和,否则将该区间和作为已知条件使用。分析: 需要一个数组val,val[i]表示i到根节点的距离,然后就是在查找根节点的过程更新路径上结点的val,和在mix函数里判断原创 2016-03-18 11:31:09 · 403 阅读 · 0 评论 -
HDU 1213 How Many Tables(并查集)
题目链接: HDU 1213 How Many Tables题意: 有N位朋友,如果A朋友和B朋友认识,B朋友和C朋友认识,那么A、B、C都互相认识。互相认识的朋友坐一桌。 给出m对互相认识的朋友,问最少需要多少桌?分析: 直接对每对互相认识的朋友合并,然后逐一将每位朋友的祖先标记下(find(i)), 然后统计有多少位朋友被标记了就是需要的最少桌子数量。#include <iostrea原创 2016-03-18 11:29:18 · 298 阅读 · 0 评论 -
POJ 1611 The Suspects (并查集)
题目链接: POJ 1611 The Suspects题意:有n个学生,编号为0–n-1。有m个社团,每个社团有k位成员,接下来给出每位成员的编号, 如果一个社团里有一位成员感染了,那么这个社团的所有成员都被感染了。 已知编号为0的学生恒被感染。 问最终有多少位学生被感染了?分析: 对于每一个社团成员除第一位成员外将所有成员都与第一位成员合并集合,最终只要查找和编号为0的学生公共祖先一样的原创 2016-03-18 11:27:41 · 354 阅读 · 0 评论 -
HDU 4514 湫湫系列故事——设计风景线(并查集+树的直径)
题目链接: HDU 4514 湫湫系列故事——设计风景线 题意: nn个点和mm条无向边。先判环,无环的话输出最长直径。 数据范围:n≤105,m≤106n\leq 10^{5},m\leq 10^{6} 分析: 并查集判环,树的直径两遍dfsdfs即可。 用C++交AC,G++就MLE,o(╯□╰)o//#pragma comment(linker,"/STACK:102400000原创 2016-08-11 23:52:02 · 477 阅读 · 0 评论