1023 - 一家人
时间限制 : 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"