【并查集模板】 【洛谷P2978】 【USACO10JAN】下午茶时间
P2978 [USACO10JAN]下午茶时间Tea Time
题目描述
N (1 <= N <= 1000) cows, conveniently numbered 1..N all attend a tea time every day. M (1 <= M <= 2,000) unique pairs of those cows have already met before the first tea time. Pair i of these cows who have met is specified by two differing integers A_i and
B_i (1 <= A_i <= N; 1 <= B_i <= N). The input never indicates that cows have met each other more than once.
At tea time, any cow i and cow j who have met a mutual friend cow k will meet sometime during that tea time and thus expand their circle of known cows.
Determine whether Q (1 <= Q <= 100) pairs of cows have met after tea times are held for long enough that no new cow meetings are occurring. Query j consists of a pair of different cows X_j and Y_j (1 <= X_j <= N; 1 <= Y_j <= N).
For example, suppose that out of cows 1 through 5, we know that 2 has met 5, 2 has met 3, and 4 has met 5; see (a) below.
2---3 2---3 2---3
\ |\ | |\ /|
1 \ --> 1 | \ | --> 1 | X |
\ | \| |/ \|
4---5 4---5 4---5
(a) (b) (c)
In the first tea time, cow 2 meets cow 4, and cow 3 meets cow 5; see (b) above. In the second tea time, cow 3 meets cow 4; see (c) above.
N(1 <= N <= 1000)头奶牛,编号为1..N,在参加一个喝茶时间活动。在喝茶时间活动开始之前,已经有M(1 <= M <= 2,000)对奶牛彼此认识(是朋友)。第i对彼此认识的奶牛通过两个不相同的整数Ai和Bi给定(1<= Ai <= N; 1 <= Bi <= N)。输入数据保证一对奶牛不会出现多次。 在喝茶时间活动中,如果奶牛i和奶牛j有一个相同的朋友奶牛k,那么他们会在某次的喝茶活动中去认识对方(成为朋友),从而扩大他们的社交圈。 请判断,在喝茶活动举办很久以后(直到没有新的奶牛彼此认识),Q(1
<= Q <= 100)对奶牛是否已经彼此认识。询问j包含一对不同的奶牛编号Xj和Yj(1 <= Xj <= N; 1 <= Yj <= N)。 例如,假设共有1..5头奶牛,我们知道2号认识5号,2号认识3号,而且4号认识5号;如下图(a)。
2---3 2---3 2---3
\ |\ | |\ /|
1 \ --> 1 | \ | --> 1 | X |
\ | \| |/ \|
4---5 4---5 4---5
(a) (b) (c)
在某次的喝茶活动中,2号认识4号,3号认识5号;如上图(b)所示。接下来的喝茶活动中,3号认识4号,如上图(c)所示。
输入输出格式
输入格式:
Line 1: Three space-separated integers: N, M, and Q
Lines 2..M+1: Line i+1 contains two space-separated integers: A_i and B_i
- Lines M+2..M+Q+1: Line j+M+1 contains query j as two space-separated integers: X_j and Y_j
行1:三个空格隔开的整数:N,M,和Q
行2..M+1:第i+1行包含两个空格隔开的整数Ai和Bi
行M+2..M+Q+1:第j+M+1行包含两个空格隔开的整数Xj和Yj,表示询问j
输出格式:
- Lines 1..Q: Line j should be 'Y' if the cows in the jth query have met and 'N' if they have not met.
行1..Q:如果第j个询问的两头奶牛认识, 第j行输出“Y”。如果不认识,第j行输出“N”
输入输出样例
5 3 3
2 5
2 3
4 5
2 3
3 5
1 5
Y
Y
N
说明
感谢@蒟蒻orz神犇 提供翻译。
并查集模板题。不多加赘述,包括了路径压缩、寻找代表元素、集合合并,其他的操作都很好想。看懂这道题并查集就会了(会不会做题还请移步另一道题:小胖的奇偶)。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstdlib> const int INF = 9999999;
const int MAXN = 2000 + 10;
const int MAXM = 1000 + 10; int m,n,q;
int fa[MAXN]; int find(int x)
{
return fa[x] == x? fa[x] : fa[x] = find(fa[x]);
} int main()
{
scanf("%d%d%d", &n, &m, &q);
for(int i = 1;i <= n; i++)
{
fa[i] = i;
}
for(int i = 1;i <= m;i++)
{
int a,b;
scanf("%d%d", &a, &b);
fa[find(a)] = find(b);
}
for(int i = 1;i <= q; i++)
{
int a,b;
scanf("%d%d", &a, &b);
if(find(a) == find(b))
{
printf("Y\n");
}
else
{
printf("N\n");
}
}
return 0;
}
【并查集模板】 【洛谷P2978】 【USACO10JAN】下午茶时间的更多相关文章
- 洛谷 P2978 [USACO10JAN]下午茶时间Tea Time
P2978 [USACO10JAN]下午茶时间Tea Time 题目描述 N (1 <= N <= 1000) cows, conveniently numbered 1..N all a ...
- 种类并查集(洛谷P2024食物链)
题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动物都是 A,B,C 中的一种,但是我 ...
- 并查集【洛谷P1197】 [JSOI2008]星球大战
P1197 [JSOI2008]星球大战 题目描述 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治着整个星系. 某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系 ...
- 【数论】卢卡斯定理模板 洛谷P3807
[数论]卢卡斯定理模板 洛谷P3807 >>>>题目 [题目] https://www.luogu.org/problemnew/show/P3807 [输入格式] 第一行一个 ...
- HDU 1213 How Many Tables(并查集模板)
http://acm.hdu.edu.cn/showproblem.php?pid=1213 题意: 这个问题的一个重要规则是,如果我告诉你A知道B,B知道C,这意味着A,B,C知道对方,所以他们可以 ...
- 洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II
洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II https://www.luogu.org/problemnew/show/P2616 题目描述 Farmer ...
- 【2018寒假集训Day 8】【并查集】并查集模板
Luogu并查集模板题 #include<cstdio> using namespace std; int z,x,y,n,m,father[10001]; int getfather(i ...
- POJ-图论-并查集模板
POJ-图论-并查集模板 1.init:把每一个元素初始化为一个集合,初始化后每一个元素的父亲节点是它本身,每一个元素的祖先节点也是它本身(也可以根据情况而变). void init() { for ...
- KMP字符串匹配 模板 洛谷 P3375
KMP字符串匹配 模板 洛谷 P3375 题意 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next.(如果 ...
随机推荐
- CSS3中2D/3D转换、过渡、动画
转换.过渡.动画 2D 转换 1.translate() 方法 通过 translate() 方法,元素从其当前位置移动,根据给定的 left(x 坐标) 和 top(y 坐标) 位置参数: 实例 d ...
- 杂项-公司:AT&T
ylbtech-杂项-公司:AT&T AT&T公司(英语:AT&T Inc.,原为American Telephone & Telegraph的缩写,也是中文译名美国电 ...
- jeecms v9修改后台访问地址
将jeeadmin/jeecms/index.do 改为admin/index.do为例 修改WebContent\WEB-INF\web.xml <servlet-mapping> &l ...
- python 筛选序列中的元素
列表生成式 a = [1, 2, 3, 4, -1, -2] b = [i for i in a if a > 0] 如果数据量很大,会产生一个庞大的结果.这时可以用生成器表达式: b = (i ...
- ElasticSearch入门之彼行我释(四)
散仙在上篇文章中,介绍了关于ElasticSearch基本的增删改查的基本粒子,本篇呢,我们来学下稍微高级一点的知识: (1)如何在ElasticSearch中批量提交索引 ? (2)如何使用高级查询 ...
- SPRINGBOOT配置事物注解和@MAPPER注意
MAPPER接口要使用@Mapper注解,不能用@Compent @Repository,否则没有效果 一.开启事物 在启动类上加 @EnableTransactionManagement //如果m ...
- HBase Ambari
- PKUWC&SC 2018 刷题记录
PKUWC&SC 2018 刷题记录 minimax 线段树合并的题,似乎并不依赖于二叉树. 之前写的草率的题解在这里:PKUWC2018 minimax Slay the Spire 注意到 ...
- parameter -- tWR
http://www.samsung.com/global/business/semiconductor/file/product/tWR-0.pdf tWR: write recovery time ...
- 使用cmd查看windows端口占用情况,并关闭应用
在做开发的时候常常会遇到端口被占用的问题,下面是我在网上找的比较好用的一种关闭占用端口进程的方法 1.在运行中输入cmd打开dos命令窗口,比如我想找到端口8888对应的PID(通过PID找到相应的进 ...