话说省赛选拔以后深感自己的STL技术不如人(和sleeoiforest教主差得牛远啊。。。TAT),所以找写和STL有关的题目做做。以下是个map的水题(但思想我还是参考了某神的才想到的。。。。),开两个map找映射即可,代码很好理解,不多说。
以下是代码:
#include<iostream>
#include<string>
#include<map>
using namespace std;
map<string,string> s;
map<string,int> ss;
int main()
{
string st[3],head,sa,sb;
int i,j,k,n,t;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>t;
s.clear();
ss.clear();
head="";
for(j=0;j<t-1;j++)
{
cin>>sa>>sb;
s[sa]=sb;
ss[sa]++;
ss[sb]++;
}
k=0;
map<string,int>::iterator it;
for(it=ss.begin();it!=ss.end();it++)
{
if((*it).second==1)
st[k++]=(*it).first;
}
for(j=0;j<k;j++)
{
if(s[st[j]].size()!=0)
head=st[j];
}
cout<<"Scenario #"<<i<<":"<<endl<<head<<endl;
while(s[head].size()!=0)
{
cout<<s[head]<<endl;
head=s[head];
}
cout<<endl;
}
return 0;
}