#include "stdio.h"
#include "string.h"
int parent[26][26];
int mark[26];
int DFS(int u, int v, int lev){
int i, k;
mark[u] = 1;
for(i=0; i<26; i++){
if(!mark[i] && parent[u][i]){
if(i==v)
return lev;
if(k=DFS(i, v, lev+1))
return k;
}
}
return 0;
}
void main(){
int i, j;
int n, m;
char a, b, c;
int k;
freopen("in.txt", "r", stdin);
while(scanf("%d %d", &n, &m), n+m){
memset(parent, 0, sizeof(parent));
getchar();
for(i=0; i<n; i++){
scanf("%c%c%c", &a, &b, &c);
if(b!='-')
parent[a-'A'][b-'A'] = 1;
if(c!='-')
parent[a-'A'][c-'A'] = 1;
getchar();
}
for(i=0; i<m; i++){
scanf("%c%c", &a, &b);
if(memset(mark, 0, sizeof(mark)), k=DFS(a-'A', b-'A', 1)){
if(k==1)
printf("child");
else if(k==2)
printf("grandchild");
else{
for(j=0; j<k-2; j++)
printf("great-");
printf("grandchild");
}
}else if(memset(mark, 0, sizeof(mark)), k=DFS(b-'A', a-'A', 1)){
if(k==1)
printf("parent");
else if(k==2)
printf("grandparent");
else{
for(j=0; j<k-2; j++)
printf("great-");
printf("grandparent");
}
}else
printf("-");
printf("\n");
getchar();
}
}
}
hdu 3786 搜索
最新推荐文章于 2017-03-21 20:03:52 发布