原题链接:https://vjudge.net/problem/102950/origin
思路:用s1,s2接收输入的旧新名字,用map的key存新名字,value存旧名字,如果出现新旧名字相同则更新key的值。
代码:
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main()
{
map<string,string> mp;
int q;
cin>>q;
while(q--)
{
string str1,str2;
cin>>str1>>str2;
//如果没有更新新名字就直接存入map
if(mp.find(str1)==mp.end()){
mp[str2] = str1;
}
//更新新名字
else{
mp[str2] = mp[str1];
mp.erase(str1);
}
}
cout<<mp.size()<<endl;
map<string,string>::iterator it;
for(it= mp.begin();it!=mp.end();it++)
{
cout<<it->second<<" "<<it->first<<endl;
}
return 0;
}