http://codeforces.com/problemset/problem/501/B
map的应用,让新的名字作为key值,旧的名字作为value值,然后一一对应。如果这个旧名字不在map里,则添加进去;如果这个旧名字在map里,则需要进行替换,将旧名字的value变成这个新名字的value
#include <iostream>
#include <map>
#include <string>
using namespace std;
map<string,string> m;
map<string,string>::iterator it;
//key作为新名字,value作为旧名字
int main()
{
int n;
cin >>n;
string s1,s2;
while(n--)
{
cin >> s1 >> s2;
if(m.find(s1)==m.end())
{
m[s2] = s1;
}
else
{
m[s2] = m[s1];
m.erase(s1);
}
}
cout << m.size() << endl;
for(it=m.begin();it!=m.end();it++)
{
cout << it->second << " " << it->first << endl;
}
return 0;
}