11. 共同祖先
時間限制: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
?這道題可以采用數組映射的方法(核心思想),雖然C沒有vector這種動態數據容器,但是可以用原來的數組進行arr[a] = b的方式記錄關系。
具體實現代碼如下:
#include <stdio.h>int main() {int N = 0;while(scanf("%d",&N)!=EOF){int arr[25] = {0};int a=0,b=0;for(int i=0;i<N;i++){scanf("%d%d",&a,&b);arr[a] = b;}int f1 =0 ,f2=0;int j1=1,j2=2;while(arr[j1]!=0){j1 = arr[j1];f1+=1;}while(arr[j2]!=0){j2 = arr[j2];f2+=1;}if(f1>f2) printf("You are my elder\n");else if(f1<f2) printf("You are my younger\n");else printf("You are my brother\n");}}