CodeForces 501B(STL_H题)解题报告

题目链接:http://codeforces.com/problemset/problem/501/B

--------------------------------------------------------------------------------

题意:N个改名操作,要求输出最开始和最终的名字

思路:利用map的操作,读取输入之后,查找是否在key中,如果不在key中,建立新的关系。如果在key中,建立新的key-value对,擦除旧的key-value对。最终通过迭代器输出key,value即可,表示起始名称与最终名称。

代码:

#include<cstdio>
#include <map>  
#include <algorithm>
#include<string>
#include<iostream>
using namespace std;
map<string,string>::iterator it; 
int main(void){
    int n = 0;
    while(~scanf("%d",&n)){
    map<string,string> m1; 
    string a,b;  
    for(int i=0;i<n;i++){
        cin>>a>>b;
    if(m1.count(a)==0) m1[a]=a;
        m1[b]=m1[a];  
        m1.erase(a); 
    }
    cout << m1.size() << '\n';  
        for(it=m1.begin();it!=m1.end();it++) {  
        cout << it->second << ' ' << it->first << '\n';  
        }  
}  
    return 0;

}
View Code

 

posted @ 2018-01-22 16:16  caomp  阅读(117)  评论(0)    收藏  举报