/*
首先输入一个正整数N N<=10, 接下来N行输入的是2个整数a和b 表示a的父亲是b(1<=a,b<=20) 小明的编号为1,小宇的编号为2
输入的数据 保证每个人只有一个父亲
*/
int n;
int bf[505] = {0};
while (1)
{
cin >> n;
if (n == 0) {
break;
}
for (int i = 1; i <= n; i++)
{
int key, value;
cin >> key>> value;
bf[key] = value;
}
int xyF = 0,xmF=0;
int xyFCount = 0,xmFCount=0;
for (int i = 1; i <=n; i++)
{
if (i == 1) {
xmF = bf[i];
}
else if (i == 2) {
xyF = bf[i];
}
else if(i == xyF) {
xyF = bf[i];
xyFCount++;
}
else if (i == xmF) {
xmF = bf[i];
xmFCount++;
}
}
string result = "";
if (xyFCount == xmFCount) {
result = "u are my brother";
}
else if (xyFCount > xmFCount) {
result = "u are my younger";//
}
else if (xyFCount < xmFCount ) {
result = "u are my elder";
}
cout << result << endl;
}
大佬:
int n;
int a[505] = { 0 };
// 模拟法
while (cin >> n) {
// 设计初始状态
for (int i = 1; i <= 504; i++) {
a[i] = i;
}
// 标记辈分
for (int i = 1; i <= n; i++) {
int x, y;
cin >> x >> y;
a[x] = y; // x 的父亲是 y
}
// 先推小明
int s1 = 0;
for (int i = 1; i != a[i]; i = a[i]) {
s1++;
}
// 再去推小宇
int s2 = 0;
for (int i = 2; i != a[i]; i = a[i]) {
s2++;
}
if (s1 > s2) {
// 小明辈分小
cout << "You are my elder" << endl;
}
else if (s1 == s2) {
cout << "You are my brother" << endl;
}
else {
cout << "You are my younger" << endl;
}
}