结点的父亲同步有问题,求调
  • 板块P2814 家谱
  • 楼主Her_Lingxiao
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/7/25 17:15
  • 上次更新2023/10/27 18:28:26
查看原帖
结点的父亲同步有问题,求调
255540
Her_Lingxiao楼主2022/7/25 17:15
#include <iostream>
#include <cstdio>
#include <string>
#include <map>
using namespace std;
const int N = int(5e4);
map<string, int> family;
string find(string name)                    //找祖先
{
    int k = family[name];
    map<string, int>::iterator it;
    for(it = family.begin(); it != family.end(); it++)
    {
        if((*it).second == k)
            return (*it).first;
    }
}
int main()
{
    char In = '*';
    string name;
    int f;                                  //记忆父亲是谁
    for(int i = 0; In != '$'; i++)
    {
        cin >> In;
        if(In == '$')                       
            break;
        cin >> name;
        if(In == '#')                       //父亲
        {
            map<string, int>::iterator w;
            w = family.find(name);
            if(w == family.end())           //所有集合中都没有这个人的父亲
                family[name] = f = i;
            else                            //有父亲
                f = (*w).second;
        }
        if(In == '+')                       //儿子
            family[name] = f;
        if(In == '?')                       //查询祖先
        {
            cout << name << " ";
            string p = find(name);
            cout << p << endl;
        }
    }
    return 0;
}
2022/7/25 17:15
加载中...