1022 Digital Library (30 分)

水。

题意

给出N本书的编号、书名、作者、关键词(可能有多个)、出版社及出版年份,并给出M个查询,每个查询给出书名、作者、关键词(单个)、出版社及出版年份中的一个,要求输出满足该给出信息的所有书的编号。

map<string,set<string>> mp[6];
int n,m;

int main()
{
    cin>>n;
    cin.ignore();

    for(int i=0;i<n;i++)
    {
        string id,title,author,keywords,publisher,publish_year;
        getline(cin,id);

        getline(cin,title);
        mp[1][title].insert(id);

        getline(cin,author);
        mp[2][author].insert(id);

        getline(cin,keywords);
        stringstream ss(keywords);
        string keyword;
        while(ss>>keyword)
            mp[3][keyword].insert(id);

        getline(cin,publisher);
        mp[4][publisher].insert(id);

        getline(cin,publish_year);
        mp[5][publish_year].insert(id);
    }

    cin>>m;
    cin.ignore();

    while(m--)
    {
        string s;
        getline(cin,s);
        string t=s.substr(3);
        cout<<s<<endl;
        int k=s[0]-'0';
        if(mp[k][t].size() == 0)
            puts("Not Found");
        else
        {
            for(auto id:mp[k][t])
                cout<<id<<endl;
        }
    }
    
    //system("pause");
    return 0;
}
原文地址:https://www.cnblogs.com/fxh0707/p/14429552.html