1023 - 一家人
最近小明交了一个新朋友叫小宇,他们在聊天的时候发现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; }