题目链接: http://codeforces.com/contest/501/problem/B
Sample test(s)
Input
5 Misha ILoveCodeforces Vasya Petrov Petrov VasyaPetrov123 ILoveCodeforces MikeMirzayanov Petya Ivanov
Output
3 Petya Ivanov Misha MikeMirzayanov Vasya VasyaPetrov123*********代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
const int maxn=1005;
int main()
{
string Name1[maxn],Name2[maxn];
string s1,s2;
int m;
cin>>m;
int cnt=0;
while(m--)
{
cin>>s1>>s2;
int gg=0;
for(int i=1;i<=cnt;i++)
if(s1==Name2[i])
{
gg=i;
break;
}
if(!gg)
{
Name1[++cnt]=s1;
Name2[cnt]=s2;
continue;
}
Name2[gg]=s2;
}
printf("%d\n",cnt);
for(int i=1;i<=cnt;i++)
cout<<Name1[i]<<" "<<Name2[i]<<endl;
return 0;
}
**********map 的做法:
#include<iostream>
# include<cstdio>
#include<cstring>
#include<string>
# include<map>
using namespace std;
map<string ,string> m;
int main()
{
string s1,s2;
int n;
cin>>n;
for(int i=0; i<n; i++)
{
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(map<string ,string>::iterator i=m.begin(); i!=m.end(); i++)
cout<<i->second<<" "<<i->first<<endl;
return 0;
}
#include<cstdio>
#include<string>
#include<map>
using namespace std;
map<string,string> m;
map<string,string>::iterator it;
int main()
{
int q;
char pre[25],now[25];
scanf("%d",&q);
while(q--)
{
scanf("%s%s",pre,now);
pair<string,string> tmp=make_pair(now,pre);
it=m.find(pre);
if(it!=m.end())
{
tmp.second=it->second;
m.erase(it);
}
m.insert(tmp);
}
printf("%d\n",m.size());
for( it=m.begin(); it!=m.end(); ++it)
printf("%s %s\n",it->second.c_str(),it->first.c_str());
}