南邮 OJ 1115 路径图排序 【绿色】

来源:互联网 发布:js正则数字和字母 编辑:程序博客网 时间:2024/05/28 09:33

路径图排序 【绿色】

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 198            测试通过 : 23 

比赛描述

南邮野生物基金会(NUPT-WF)的志愿者近期去南京老山国家森林公园,寻找住在森林附近濒临灭绝的动物。NUPT-WF志愿者得到一份老山国家森林公园地图,该森林公园包括许多空地,和连接空地的路径。不同种濒危动物住在每条路径上,没有动物住在空地上。

NUPT-WF希望从森林公园找到一些濒危动物。但是它们的路径图太过混乱,因为空地和动物未按特定序列给出。现请你帮助NUPT-WF志愿者给南京老山国家森林公园的路径图排序。




输入

动物以单词表示,空地用数字表示,最多有500个空地。

空地0总是森林公园的入口。输入为未分类的森林公园的路径图。

每一行描述两个空地之间的路径,表示为一对数字和住在路径上的一列动物。

输出

输出为一个排序后的路径图,空地数字从0开始增长,动物名从a到z排序。路径由路径任一端的空地号进行排序。所有住在路径上的动物依字母顺序排序。

样例输入

1 0 puma lynx
2 0 puma
1 2 vole

样例输出

0 1 lynx puma 
0 2 puma
1 2 vole

题目来源

“IBM南邮杯”团队赛2009



#include<iostream>#include<string>#include<sstream>#include<set>using namespace std;struct path{int i,j;set<string> animals;};bool operator<(const path& p1,const path& p2){if(p1.i != p2.i)return p1.i<p2.i;elsereturn p1.j<p2.j;}int main(){path aPath;stringstream ss;string s;set<path> pathes;set<path>::iterator p_it;set<string>::iterator s_it;while(cin>>aPath.i>>aPath.j && getline(cin,s)){if(aPath.i>aPath.j)swap(aPath.i,aPath.j);ss.clear();ss.str(s);aPath.animals.clear();while(ss>>s){aPath.animals.insert(s);}pathes.insert(aPath);}for(p_it=pathes.begin();p_it!=pathes.end();++p_it){cout<<p_it->i<<" "<<p_it->j;for(s_it=p_it->animals.begin();s_it!=p_it->animals.end();++s_it){cout<<" "<<*s_it;}cout<<endl;}return 0;}






0 0