1023 - 一家人

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

最近小明交了一个新朋友叫小宇,他们在聊天的时候发现500年前他们竟然是一家人!现在小明想知道小宇是他的长辈,晚辈,还是兄弟。

题目输入

输入包含多组测试数据。每组首先输入一个整数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

C语言解答

#include<stdio.h>
int main()
{
	int ak[3000],i,a,b,n,counter1,counter2;
	while(scanf("%d",&n)!=EOF)
	{
		for(i=0;i<n;i++)
		{
			scanf("%d%d",&a,&b);
			ak[a]=b;
		}
		i=1;
		counter1=counter2=0;
		while(ak[i])
		{
			i=ak[i];
			counter1++;
		}
		i=2;
		while(ak[i])
		{
			i=ak[i];
			counter2++;
		}
		if(counter1<counter2)printf("You are my younger\n");
		else if(counter2<counter1)printf("You are my elder\n");
		else printf("You are my brother\n");
	}
	return 0;
}

C++解答

#include<cstdio>
#include<map>
using namespace std;
 
int main()
{
	int n,a,b,na[5000],nb[5000];
	map<int,int> p;
	while(scanf("%d",&n)!=EOF)
	{
		p.clear();
		while(n--)
		{
			scanf("%d%d",&a,&b);
			p[a]=b;
		}
		int k1=0;
		na[k1]=p[1];
		while(p.count(na[k1]))
		{
			int t;
			t=p[na[k1]];
			k1++;
			na[k1]=t;
		}
		int k2=0;
		nb[k2]=p[2];
		while(p.count(nb[k2]))
		{
			int t;
			t=p[nb[k2]];
			k2++;
			nb[k2]=t;
		}
		int flag=0;
		for(int i=0;i<=k1;i++)
		{
			if(flag)
				break;
			for(int j=0;j<=k2;j++)
				if(na[i]==nb[j])
				{
					if(i<j)
						printf("You are my younger\n");
					else if(i>j)
						printf("You are my elder\n");
					else
						printf("You are my brother\n");
					flag=1;
					break;
				}
		}
	}
	return 0;
}

Java解答



import java.io.BufferedInputStream;
import java.util.Scanner;

public class Main {

	
	public static void main(String[] args)
	{
		Scanner scanner = new Scanner(new BufferedInputStream(System.in));
		
		while(scanner.hasNext())
		{
			 int number1 = 0;
			 int number2 = 0;
			 int n = scanner.nextInt();
			 int a[][] = new int[20 + 2][2 + 20];
			 for(int i = 0; i < n; i++)
			 {
				 int x = scanner.nextInt();
				 int y = scanner.nextInt();
				 a[x][y] = 1;
			 }
			 
			 boolean a1 = true;
			 int x1 = 1;
			 while(a1)
			 {
				 for(int i = 1; i <= 20; i++)
				 {
					 if(a[x1][i] == 1)
					 {
						 x1 = i;
						 number1++;
						 a1 = true;
						 break;
					 }
					 else
					 {
						 a1 = false;
					 }
					
				 }
			 }
			 
			 
			 boolean a2 = true;
			 int x2 = 2;
			 while(a2)
			 {
				 for(int i = 1; i <= 20; i++)
				 {
					 if(a[x2][i] == 1)
					 {
						 x2 = i;
						 number2++;
						 a2 = true;
						 break;
					 }
					 else
					 {
						 a2 = false;
					 }
					
				 }
			 }
			 
			 if(number1 == number2)
			 {
				 System.out.println("You are my brother");
			 }
			 else if(number1 > number2)
			 {
				 System.out.println("You are my elder");
			 }
			 else
			 {
				 System.out.println("You are my younger");
			 }
		}
		
		
		
	}
}

Python解答


while True:
    n = input()
    lst = [0 for i in range(21)]
    #print lst
    while n:
        [a,b]=raw_input().split()
        lst[int(a)]=int(b)
        n -= 1
        if n==0:break
    for i in lst:
        if i>0 and lst[i]==0:root=i
    #print root
    #print lst
    xiaoming = 0
    xiaoyu = 0
    pos = 1
    while lst[pos]!=root:
        xiaoming+=1
        pos=lst[pos]
    pos = 2
    while lst[pos]!=root:
        xiaoyu+=1
        pos=lst[pos]
    if xiaoming>xiaoyu:print "You are my elder"
    elif xiaoming<xiaoyu:print "You are my younger"
    else:print "You are my brother"