查集专题

poj 1182 并查集 食物链类

题意: 有n只动物,分别编号1....n。所有动物都属于A,B,C中的一种,已知A吃B,B吃C,C吃A。 按顺序给出下面两种共K条信息: 1. x 和 y 属于同一类。 2. x 吃 y 。 然而这些信息可能会出错,有可能有的信息和之前给出的信息矛盾,也有的信息可能给出的 x 和 y 不在n的范围内。 求k条信息中有多少条是不正确的。 解析: 对于每只动物,创建3个元素 i

POJ1988带权并查集

M u v 将u所在的堆移动到v所在的堆的上面 C u 求u的下面有多少块 带权并查集 import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigInteger;i

POJ1703带权并查集

D: u v  u与v在不同的集合 A: u v  查询u与v的关系 1)压缩路径过程        fu->root   0  1  u-fu 0                 0  1   1                 1  0 2)合并过程 fu->fv      u->fu   0 1   v->fv 0            1 0 1            0

并查集基础与简单扩展应用

并查集 基础题目路径压缩 扩展应用扩展题目1扩展题目2 并查集的结构是一棵树 并查集有两种功能,一种是判断两个元素是否在同一集合,第二种是合并两个集合 并查集的实现需要记录每个节点的父亲节点 判断两个元素是否在同一集合,即判断两个元素的祖宗节点是否是一个节点(祖宗代表整棵树的根节点) 合并两个集合,即将任意一个集合祖宗的爸爸改为另一个集合的祖宗 基础题目 一共有

nyoj99(并查集+欧拉路+dfs)

单词拼接 时间限制: 3000 ms  |  内存限制: 65535 KB 难度: 5 描述 给你一些单词,请你判断能否把它们首尾串起来串成一串。 前一个单词的结尾应该与下一个单词的道字母相同。 如 aloha dog arachnid gopher tiger rat   可以拼接成:aloha.arachnid.dog.gopher.rat.tiger 输入 第一行是一个整

nyoj42(并查集解决欧拉回路)

一笔画问题 时间限制: 3000 ms  |  内存限制: 65535 KB 难度: 4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。 规定,所有的边都只能画一次,不能重复画。   输入 第一行只有一个正整数N(N<=10)表示测试数据的组数。 每组测试数据的第一行有两个正整数P,Q(P<=1000,Q<

【HDU】5222 Exploration(并查集+拓扑排序)

对于无向边使用并查集合并成一个集合,对于有向边使用判断是否存在环 唯一无语的地方就是看输入是百万级的,加个输入挂跑9s,不加挂跑了5s #include<cstdio>#include<cstring>#include<vector>#include<algorithm>using namespace std;#pragma comment(linker, "/STACK:102

【HDU】How Many Answers Are Wrong(带权并查集)

num[i]代表i到根节点的值 这道题一开始竟然以为是线段树= =!后来发现线段树无法进行子区间的维护 #include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn = 222222;int fa[maxn],num[maxn];int find_father(int

2014级寒假特训之并查集专题

Problem A: Double和XXZ的生日宴请 Time Limit: 1 Sec   Memory Limit: 128 MB Submit: 9   Solved: 7 [ Submit][ Status][ Web Board] [ Edit] [ TestData] Description Double 和 XXZ同一天生日,他们俩30岁生日那天,当年

【POJ】1733 Parity game 并查集

传送门:【POJ】1733 Parity game 题目大意:给你一个长度为n的01序列,再给你m句话,每句话是一个区间【L,R】,告诉你区间【L,R】中1的个数,现在你的任务是找到从第几句话开始说的和前面矛盾,出现第一次假话的时候前面有多少是真话。 题目分析:一开始看几乎没思路啊。后来没办法了,只能跑别人的博客去看看了。。。一看到说把一个区间【L,R】拆成两个区间【0,L-1】,

【HDU】2860 Regroup 并查集

传送门:【HDU】2860 Regroup 题目分析:其实就是披着并查集外表的模拟题,照着做就好了。。。话说题目中给了x==y。。这个真的大丈夫?。。 代码如下: #include <cmath>#include <cstdio>#include <cstring>#include <algorithm>using namespace std ;#define

【HDU】3938 Portal 并查集

传送门:【HDU】3938 Portal 题目分析:并查集离线处理即可。当然你要知道怎么计数 代码如下: #include <cstdio>#include <cstring>#include <algorithm>using namespace std ;#define REP( i , n ) for ( int i = 0 ; i < n ; ++ i )

【Tsinsen】1228 飞飞侠【并查集优化最短路】

题目链接:A1228. 飞飞侠 #include <bits/stdc++.h>using namespace std ;typedef long long LL ;#define clr( a , x ) memset ( a , x , sizeof a )const int MAXN = 155 ;const LL INF = 1e18 ;struct Node {LL dis ;in

HDU1232_畅通工程(并查集)

畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 25543    Accepted Submission(s): 13343 Problem Description 某省调查城镇交通状况,得到现有城镇道路统

SDUT2797_电影节(并查集)(模板)

电影节 Time Limit: 1000MS Memory limit: 65536K 题目描述 某届电影节评选电影,共有两部电影进入最后评选环节,有n名观众,每个人有一次投票的机会,每个人都按照规则投给其中一部电影。为了了解情况,记者随机询问了一些人,一共询问了m次,特别神奇的是,记者每次都询问两个人,而且这两个人都把票投给了同一部电影,观众编号为1~n。 输入

并查集题目(路径压缩、扩展域并查集、带权并查集、二维转一维并查集、逆向思维并查集)

目录 P2814 家谱 P1955 [NOI2015] 程序自动分析 P2256 一中校运会之百米跑    (并查集结合map) P3144 [USACO16OPEN]Closing the Farm S P6121 [USACO16OPEN]Closing the Farm G P1197 [JSOI2008] 星球大战 P5092 [USACO04OPEN]Cube Stacki

poj 1182 带权并查集

食物链 Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 45303 Accepted: 13213 Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。  现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。

最小生成树 并查集 最短路径

#include<stdio.h>#include<stdlib.h>struct edge{int u;int v;int w;//为了方便排序这里穿件一个结构体来存储边的关系}e[10];int n,m;int f[10]={0},sum=0,count=0;//并查集需要得到的一些变量//f数组大小根据实际情况来设置,要比n的最大值大1//排序int cmp(const

HDU 1116(并查集,欧拉路径)

题意:给你一些英文单词,判断所有单词能不能连成一串,类似成语接龙的意思。但是如果有多个重复的单词时,也必须满足这样的条件才能算YES。否则都是不可能的情况。 解题思路: 欧拉路的基本题。只要知道就可以做出来了。 关于欧拉回路和欧拉路径 定义: 欧拉回路:每条边恰好只走一次,并能回到出发点的路径 欧拉路径:经过每一条边一次,但是不要求回到起始点 ①首先看欧拉回路存在性的判

HDU 1325(并查集判断一个图是否是一棵树)

题意:每组数据都以0 0结束,-1 -1结束程序。 每组数据中的每两个数字为一小组,前一个数字代表的结点指向后一个数字代表的结点。   #include <iostream>#include <cstring>using namespace std;int father[100010];int find_father(int x){while (father[x] != x)x

【加权并查集】【只需要写merge其他直接模板】

Language: Default 食物链 Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 54003 Accepted: 15803 Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。  现有N个动物,以1-N编号。每个动物都是A,B,C中的

hihocode的并查集map

题目意思:0代表name1和name2是伙伴,1代表查询name1和name2是否是伙伴。 #include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<vector>#include<queue>#include<map>#include<stack

【并查集】ZOJ1789The Suspects

ZOJ1789The Suspects 用简单的并查集水了。。。看到有的题解用的是sum[ra] += sum[rb],这种叫什么名字,不记得了,但是这样肯定比我的好点。 #include <stdio.h>#include <iostream>#include <string>#include <cstring>using namespace std;int fa[30005]

【并查集】HDU 1325 Is It A Tree?

HDU 1325 Is It A Tree? 就是判断能不能成为一棵树。空树也是树。 根据连通性,根节点个数,入度出度等。 #include <stdio.h>#include <iostream>#include <string>#include <cstring>using namespace std;int fa[100005], vis[100005];int in[1

【并查集】 HDU 3172 Virtual Friends

HDU 3172 Virtual Friends 数据量大,不建议用cin。 #include <iostream>#include <string>#include <algorithm>#include <math.h>#include <stdio.h>#include <cstring>#include <stdlib.h>#include <map>using n

【并查集】 HDU 1272 小希的迷宫

HDU 1272 小希的迷宫 需要判断是否是连通图。 #include <iostream>#include <string>#include <algorithm>#include <math.h>#include <stdio.h>#include <cstring>#include <stdlib.h>using namespace std;int father[100