zoukankan      html  css  js  c++  java
  • 家谱(gen)

    家谱(gen)
    时间限制  2S
    【问题描述】
        现代的人对于本家族血统越来越感兴趣,现在给出充足的父子关系,请你编写程序找到某个人的最早的祖先。
    【输入格式】gen.in
      输入文件由多行组成,首先是一系列有关父子关系的描述,其中每一组父子关系由二行组成,用#name的形式描写一组父子关系中的父亲的名字,用+name的形式描写一组父子关系中的儿子的名字;接下来用?name的形式表示要求该人的最早的祖先;最后用单独的一个$表示文件结束。规定每个人的名字都有且只有6个字符,而且首字母大写,且没有任意两个人的名字相同。最多可能有1000组父子关系,总人数最多可能达到50000人,家谱中的记载不超过30代。
    【输出格式】gen.out
      按照输入文件的要求顺序,求出每一个要找祖先的人的祖先,格式:本人的名字+一个空格+祖先的名字+回车。
    学学学学学学学mapmapmapmapmap
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #include<map>
     5 using namespace std;
     6 map<string,string>mp;
     7 string father,s2="";
     8 int main() 
     9 {
    10     char a;
    11     while(cin>>a) 
    12     {
    13         if(a=='$')
    14         break;
    15         if(a=='#') 
    16         {
    17             cin>>s2;
    18             if(mp[s2]=="")mp[s2]=s2;
    19             father=s2;
    20         }
    21         if(a=='+') 
    22         {
    23             cin>>s2;
    24             while(mp[father]!=father)father=mp[father];
    25             mp[s2]=father;
    26         }
    27         if(a=='?') 
    28         {
    29             cin>>s2;
    30             cout<<s2<<" "<<mp[s2]<<endl;
    31         }
    32     
    33     }
    34     return 0;
    35 }
  • 相关阅读:
    时间的计算
    中英文词频统计
    组合数据类型,英文词频统计
    作业二
    学号提取
    用for循环产生的网址
    温度转换
    身份证号码提取
    数字游戏
    更改mysql连接个数
  • 原文地址:https://www.cnblogs.com/sssy/p/6701339.html
Copyright © 2011-2022 走看看