Submit: 76 Solved: 12
[ Submit][ Status][ Web Board]
Description
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.
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
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 brother
这个是找代的问题,
比如,对于第二组数据,
1的父亲是3,再找3的父亲是5,再找5的父亲是7,共3代。
同理,2的父亲是4,4的父亲是6,6的父亲是7,共3代,
因此1和2是兄弟!
是不是挺简单的?呵呵!下面看代码吧!
#include <iostream>
using
namespace
std;
#define MAX_LEN 2002
int
main()
{
int
a=0, b=0;
int
n=0, count;
int
arr[MAX_LEN];
int
cnta, cntb;
int
i, j;
//for (i = 0; i < MAX_LEN; i++)
// arr[i] = 0;
while
(cin >> n)
{
for
(i = 0; i < MAX_LEN; i++)
arr[i] = 0;
count = 0;
while
(count < n)
{
cin >> a >> b;
//if (a == b)
// break;
arr[a] = b;
count++;
}
//*************************
cnta = 0;
cntb = 0;
i = 1;
while
(arr[i] > 0 )
{
cnta ++;
i = arr[i];
}
i = 2;
while
(arr[i] > 0 )
{
cntb ++;
i = arr[i];
}
if
(cnta == cntb)
{
cout <<
"You are my brother"
<< endl;
}
else
if
(cnta > cntb)
{
cout <<
"You are my elder"
<< endl;
}
else
if
(cnta < cntb)
cout <<
"You are my younger"
<< endl;
}
return
0;
}
/**************************************************************
Problem: 1053
User: 1006440533
Language: C++
Result: Accepted
Time:100 ms
Memory:1272 kb
****************************************************************/