-
采用递归的思想(我师父的代码嘻嘻)
#include<iostream> using namespace std; int find(char relation[][4],int n,char begin,char end) { int i; for(i=0;i!=n;i++) { if(relation[i][0]==begin) break; } if(i==n) return -999; if(relation[i][1]==end||relation[i][2]==end) return 1; else{ int a=find(relation,n,relation[i][1],end); int b=find(relation,n,relation[i][2],end); return 1+(a>=b?a:b); } } int main() { int n,m; while(cin>>n>>m) { if(n==0&&m==0) break; char relation[n][4]; for(int i=0;i!=n;i++) cin>>relation[i]; while(m--) { char question[3]; cin>>question; int generation; if((generation=find(relation,n,question[0],question[1]))>0) { if(generation==1) cout<<"child"<<endl; else{ for(int i=1;i<=generation-2;i++) cout<<"great-"; cout<<"grandchild"<<endl; } }else if((generation=find(relation,n,question[1],question[0]))>0) { if(generation==1) cout<<"parent"<<endl; else{ for(int i=1;i<=generation-2;i++) cout<<"great-"; cout<<"grandparent"<<endl; } }else cout<<"-"<<endl; } } return 0; }