Time limit 1000 ms
Memory limit 131072 kB
Little A gets to know a new friend, Little B, recently. One day, they realize that they are family 500 years ago. Now, Little A wants to know whether Little B is his elder, younger or brother.
Input
There are multiple test cases.
For each test case, the first line has a single integer, n (n<=1000). The next n lines have two integers a and b (1<=a,b<=2000) each, indicating b is the father of a. One person has exactly one father, of course. Little A is numbered 1 and Little B is numbered 2.
Proceed to the end of file.
For each test case, the first line has a single integer, n (n<=1000). The next n lines have two integers a and b (1<=a,b<=2000) each, indicating b is the father of a. One person has exactly one father, of course. Little A is numbered 1 and Little B is numbered 2.
Proceed to the end of file.
Output
For each test case, if Little B is Little A’s younger, print “You are my younger”. Otherwise, if Little B is Little A’s elder, print “You are my elder”. Otherwise, print “You are my brother”. The output for each test case occupied exactly one line.
Sample Input
5
1 3
2 4
3 5
4 6
5 6
6
1 3
2 4
3 5
4 6
5 7
6 7
Sample Output
You are my elder
You are my brother 签到题,树的基本概念,代码如下:
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stack>
#include<map>
#include<set>
#include<queue>
#include<cmath>
#include<string>
using namespace std;
int n,t;
int fa[];
int x,y;
int main()
{
while(~scanf("%d",&n))
{
memset(fa,,sizeof(fa));
for(int i=;i<=n;i++)
{
scanf("%d%d",&x,&y);
fa[x]=y;
}
int la=,lb=;
int k=;
while(fa[k]!=k)
{
la++;
k=fa[k];
}
k=;
while(fa[k]!=k)
{
lb++;
k=fa[k];
}
if (la==lb) printf("You are my brother\n");
else
if (lb>la) printf("You are my younger\n");
else
if (lb<la) printf("You are my elder\n");
}
return ;
}