题目描述

N(1≤N≤1000)N (1 \leq N \leq 1000)N(1N1000) 头奶牛,编号为 1…N1 \dots N1N,在参加一个喝茶时间活动。在喝茶时间活动开始之前,已经有 M(1≤M≤2,000)M (1 \leq M \leq 2,000)M(1M2,000) 对奶牛彼此认识(是朋友)。第i对彼此认识的奶牛通过两个不相同的整数 AiA_iAiBiB_iBi 给定(1≤Ai≤N,1≤Bi≤N1 \leq A_i \leq N, 1 \leq B_i \leq N1AiN,1BiN)。输入数据保证一对奶牛不会出现多次。 在喝茶时间活动中,如果奶牛 iii 和奶牛 jjj 有一个相同的朋友奶牛 kkk,那么他们会在某次的喝茶活动中去认识对方(成为朋友),从而扩大他们的社交圈。请判断,在喝茶活动举办很久以后(直到没有新的奶牛彼此认识),Q(1≤Q≤100)Q (1 \leq Q \leq 100)Q(1Q100) 对奶牛是否已经彼此认识。询问j包含一对不同的奶牛编号 XjX_jXjYjY_jYj1≤Xj≤N,1≤Yj≤N1 \leq X_j \leq N, 1 \leq Y_j \leq N1XjN,1YjN)。

例如,假设共有 555 头奶牛,我们知道 222 号认识 555 号,222 号认识 333 号,而且 444 号认识 555 号;如下图 (a)。

   2---3           2---3            2---3
    \              |\  |            |\ /|
1    \     -->  1  | \ |    -->  1  | X |
      \            |  \|            |/ \|
   4---5           4---5            4---5
    (a)             (b)              (c)

在第一次喝茶活动中,222 号认识 444 号,333 号认识 555 号,如上图 (b) 所示。接下来的喝茶活动中,333 号认识了 444 号,如上图 © 所示。

输入格式

111 行:三个空格隔开的整数:NNNMMMQQQ

2…M+12 \dots M+12M+1 行:第 i+1i+1i+1 行包含两个空格隔开的整数 AiA_iAiBiB_iBi

M+2…M+Q+1M+2 \dots M+Q+1M+2M+Q+1 行:第 j+M+1j+M+1j+M+1 行包含两个空格隔开的整数 XjX_jXjYjY_jYj,表示询问 jjj

输出格式

1…Q1 \dots Q1Q 行:如果第 jjj 个询问的两头奶牛认识, 第 jjj 行输出 Y。如果不认识,第 jjj 行输出 N

输入输出样例 #1

输入 #1

5 3 3 
2 5 
2 3 
4 5 
2 3 
3 5 
1 5 

输出 #1

Y 
Y 
N 

说明/提示

感谢@蒟蒻orz神犇 提供翻译。

思路

看似很神秘,实则有点诈骗的成分。

其实就是并查集板子。

代码

#include<bits/stdc++.h>
using namespace std;
int n,m,q,prt[1001];
int getfather(int u)
{
	if(prt[u]==u)
		return u;
	return prt[u]=getfather(prt[u]);
}
void merge(int x,int y)
{
	int xx=getfather(x),yy=getfather(y);
	if(xx!=yy)
		prt[xx]=yy;
}
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m>>q;
	for(int i=1;i<=n;i++)
		prt[i]=i;
	for(int i=1;i<=m;i++)
	{
		int x,y;
		cin>>x>>y;
		merge(x,y);
	}
	for(int i=1;i<=q;i++)
	{
		int x,y;
		cin>>x>>y;
		int xx=getfather(x),yy=getfather(y);
		if(xx!=yy)
			cout<<"N\n";
		else
			cout<<"Y\n";
	}
	return 0;	
}
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐