行 1…Q1…Q:如果第 jj 个询问的两头奶牛认识, 第 j行输出"Y"。如果不认识,第 jj 行输出"N"。
输出时每行末尾的多余空格,不影响答案正确性
样例输入
5 3 3
2 5
2 3
4 5
2 3
3 5
1 5
样例输出
Y
Y
N
题意:
对于给出的两个数检查是否认识,认识打印Y否则的话打印N;
阶梯思路:
将认识的分群,最后检查即可(并查集模板)
Accept Code:
#include<stdio.h>
int f[50005];
int getf(int v)
{
return f[v]==v ? v:getf(f[v]);
}
void merge(int v,int u)
{
int t1=getf(v);
int t2=getf(u);
if(t1!=t2)
f[t2]=t1;
return;
}
int main()
{
int i,x,y,n,m,s;
while(scanf("%d %d %d", &n,&m,&s)!=EOF)
{
for(i=1; i<=n; i++)
f[i]=i;
for(i=1; i<=m;i++)
{
scanf("%d %d", &x,&y);
merge(x,y);
}
for(i=1; i<=s; i++)
{
scanf("%d %d", &x,&y);
if(getf(x)==getf(y))
printf("Y\n");
else
printf("N\n");
}
}
return 0;
}