http://acm.hdu.edu.cn/showproblem.php?pid=1263
stl的map是用一颗二叉排序树储存元素的,排序准则取决于key的元素类型,string的默认准则就是字母顺序。用迭代器遍历map时,按照排序树的顺序访问元素,所以输出是字母顺序
code:
#include<iostream>
#include<map>
#include<cstring>
using namespace std;
int main()
{
int T;
cin>>T;
while(T--){
map<string , map<string, int > > m;
string a , b ;
int n,num;
cin>>n;
while(n--){
cin>>a>>b>>num;
m[b][a]+=num;
}
map<string , map<string, int > >::iterator it_1;
map<string, int >::iterator it_2;
for(it_1=m.begin();it_1!=m.end();it_1++){
cout<<it_1->first<<endl;
for(it_2=it_1->second.begin();it_2!=it_1->second.end();it_2++){
cout << " |----" << it_2->first << "(" << it_2->second << ")" <<endl;
}
}
if(T!=0) cout<<endl;
}
return 0;
}