NBUT
题目链接;https://ac.2333.moe/Problem/view.xhtml?id=1218
题目大意;就是输入几组父子的关系,求标号1与2是什么关系;同一代,年轻一代还是老一代;
完全套用并查集的模板;只是最后面多一个函数来计算它的代数;
计算代数的代码;
int f(int k)
{
int h=0;
while(k!=pa[k])
{
k = pa[k];
h++;
}
return h;
}
题目代码;完全套用并查集;
#include<stdio.h>
#include<string.h>
int pa[2006];
int find (int a)//求代数;;;
{
while(pa[a]!=a)
a=pa[a];
return a;
}
void marget(int a, int b)
{
int a1=find(a);
int b1=find(b);
if(a1!=b1)
pa[a1]=b1;
}
int f(int k)
{
int h=0;
while(k!=pa[k])
{
k = pa[k];
h++;
}
return h;
}
int main()
{
int n, i, a, b,sum1,sum2;
while(~scanf("%d",&n))
{
for(i = 0; i < 2005; i++)
{
pa[i]=i;
}
for(i = 1; i <= n; i++)
{
scanf("%d %d",&a,&b);
marget(a,b);
}
sum1=f(1);
sum2=f(2);
if(sum1==sum2)
{
printf("You are my brother\n");
}
else if(sum1<sum2)
{
printf("You are my younger\n");
}
else
{
printf("You are my elder\n");
}
}
return 0;
}