PAT1022——Digital Library

来源:互联网 发布:淘宝怎样设置分享有赏 编辑:程序博客网 时间:2024/05/17 06:22

这题主要在于要做5张map<string, set<string>>做出索引来,还有getcin、getchar的用法,直接po代码了。



int n, m;map<string, set<string>> book[5];int main(){    cin>>n;    for(int i = 0; i<n; i++){        string id; cin>>id; getchar();        string temp;        set<string> temp1;        for(int j = 0; j<5; j++){            if(j == 2){                do{                    cin>>temp;                    if(book[j].count(temp) == 0){                        temp1.insert(id);                        book[j].insert(pair<string, set<string>>(temp, temp1));                    }                    else book[j][temp].insert(id);                }while(getchar() != '\n');                continue;            }            getline(cin, temp);            if(book[j].count(temp) == 0){                temp1.insert(id);                book[j].insert(pair<string, set<string>>(temp, temp1));            }                        else book[j][temp].insert(id);            temp1.clear();        }    }    cin>>m;    string temp;int num;    for(int i = 0; i<m; i++){        scanf("%d: ", &num);        getline(cin, temp);        cout<<num<<": "<<temp<<endl;        num--;        if(book[num].count(temp) == 0) cout<<"Not Found"<<endl;        else{            set<string, string>::iterator it;            for(it = book[num][temp].begin(); it != book[num][temp].end(); it++){                cout<<*it<<endl;            }        }    }    return 0;}