时间限制:1.000S  空间限制:32MB

题目描述

小明发现和小宇有共同祖先!现在小明想知道小宇是他的长辈,晚辈,还是兄弟。

输入描述

输入包含多组测试数据。每组首先输入一个整数N(N<=10),接下来N行,每行输入两个整数a和b,表示a的父亲是b(1<=a,b<=20)。小明的编号为1,小宇的编号为2。
输入数据保证每个人只有一个父亲。

输出描述

对于每组输入,如果小宇是小明的晚辈,则输出“You are my younger”,如果小宇是小明的长辈,则输出“You are my elder”,如果是同辈则输出“You are my brother”。

输入示例
5
1 3
2 4
3 5
4 6
5 6
6
1 3
2 4
3 5
4 6
5 7
6 7
输出示例
You are my elder
You are my brother

答案

package main
 
import (
    "fmt"
)
 
var (
    helper map[int]int
    n int
    a int
    b int
    aLen int
    bLen int
)
 
func main() {
    for {
        _, err := fmt.Scan(&n)
        if err != nil || n == 0 {
            break
        }
        helper := make(map[int]int, n)
        for ; n > 0; n-- {
            fmt.Scan(&a, &b)
            helper[a] = b
        }
        a, b = 1, 2
        for {
            if p, has := helper[a]; has {
                a = p
                aLen++
            } else {
                break
            }
        }
        for {
            if p, has := helper[b]; has {
                b = p
                bLen++
            } else {
                break
            }
        }
        if aLen > bLen {
            fmt.Println("You are my elder")
        } else if aLen < bLen {
            fmt.Println("You are my younger")
        } else {
            fmt.Println("You are my brother")
        }
        aLen = 0
        bLen = 0
    }
}