1. 程式人生 > >最近公共祖先·一 HihoCoder

最近公共祖先·一 HihoCoder

  • #include<bits/stdc++.h>
    using namespace std;
    int n,m;
    map<string,string > pre;
    void FindAnscetor(string str1,string str2)
    {
        map<string,int >book;
        book[str1]=1;
        while(!pre[str1].empty())
        {
            book[pre[str1]]=1;
            str1=pre[str1];
        }
        while(!str2.empty())
        {
            if(book[str2])
            {
                cout<<str2<<endl;
                return ;
            }
            str2=pre[str2];
        }
        printf("-1\n");
    }
    int main()
    {
        while(~scanf("%d",&n))
        {
            pre.clear();
            string str1,str2;
            for(int i=1; i<=n; i++)
            {
                cin>>str1>>str2;
                pre[str2]=str1;
            }
            scanf("%d",&m);
            for(int i=1; i<=m; i++)
            {
                cin>>str1>>str2;
                FindAnscetor(str1,str2);
            }
        }
        return 0;
    }