找出直系亲属--c++

#include<cstdio>
#include<iostream>
#include<string>
using namespace std;

const int maxn=27;
int son[maxn];

void Initial()
{
  for(int i=0;i<maxn;i++)
  {
    son[i]=0;
  }
}
bool isparent(int x,int y,int & num)
{
  if(son[x]==0)return false;
  if(son[x]!=y)
     return isparent(son[x],y,++num);
      else
      {
        return true;
      }
      
}
int main ()
{
  int n,m;
  while(scanf("%d%d",&n,&m)!=EOF)
  {
    getchar();
    string str;
    for(int i=0;i<n;i++)
    {
      getline(cin,str);
      int x=str[0]-'A'+1;
      int y=str[1]-'A'+1;
      int z=str[2]-'A'+1;
      son[y]=x;
      son[z]=x;
    }
  for(int i=0;i<m;i++)
  {
    getline(cin,str);
    int x=str[0]-'A'+1;
      int y=str[1]-'A'+1;
      int num=1;
      int num2=1;
      if(isparent(x,y,num))
      {
        if(num==1)
        printf("parent\n");
        else if(num==2)
        printf("grandparent\n");
        else
        {
          while(num-->2)
          {
            printf("great-");
          }
          printf("grandparent\n");
        }
        
      }
      else if(isparent(y,x,num2))
      {
        if(num2==1)
        printf("son\n");
        else if(num2==2)
        printf("grandson\n");
        else
        {
          while(num2-->2)
          {
            printf("great-");
          }
          printf("grandson\n");
        }
        
      }else
      {
        printf("-\n");
      }
      
  }
  }
  return 0;
}
发布了22 篇原创文章 · 获赞 1 · 访问量 573

猜你喜欢

转载自blog.csdn.net/baidu_37143827/article/details/104702749