poj 2491 Scavenger Hunt
#include<iostream>
#include<string>
#include<map>
using namespace std;
string str[500][2];
int main()
{
int cases,v,i;
cin>>cases;
for(int id=1;id<=cases;++id)
{
scanf("%d",&v);
map<string,string> col;
for(i=1;i<v;++i)
{
cin>>str[i][0]>>str[i][1];
col.insert(make_pair(str[i][0],str[i][1]));
}
printf("Scenario #%d:\n",id);
bool tag[500];
memset(tag,0,sizeof(tag));
for(i=1;i<v;++i)
{
for(int j=1;j<v;++j)
if(str[i][1]==str[j][0])
{
tag[j]=1;
break;
}
}
for(i=1;tag[i]!=0;++i);
string path=str[i][0];
do
{
cout<<path<<endl;
path=col[path];
}while(path!="");
cout<<endl;
}
return 0;
}