hdu 1263 水果
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
struct FUL
{
string fulname;
int num;
};
struct place
{
string name;
FUL ful[1000];
int len;
};
place pl[1000];
bool comp1(place a,place b)
{
return a.name < b.name;
}
bool comp2(FUL a, FUL b)
{
return a.fulname < b.fulname;
}
int main()
{
int N,M;
cin >> N;
while( N --)
{
cin >> M;
int i;
int count = 0;
int j;
for( i = 0; i < M; i ++)
{
string strn,strf;
int num;
cin >> strf >> strn >> num;
for( j = 0; j < count; j ++)
{
if( strn == pl[j].name)
{
int k;
for( k = 0; k < pl[j].len; k ++)
{
if( pl[j].ful[k].fulname == strf)
{
pl[j].ful[k].num += num;
break;
}
}
if( k == pl[j].len)
{
pl[j].ful[k].fulname = strf;
pl[j].ful[k].num = num;
pl[j].len ++;
}
break;
}
}
if( j == count)
{
pl[j].name = strn;
pl[j].ful[0].fulname = strf;
pl[j].ful[0].num= num;
pl[j].len = 1;
count ++;
}
}
sort(pl,pl+count,comp1);
for( i = 0; i < count; i ++)
{
sort(pl[i].ful,pl[i].ful + pl[i].len,comp2);
}
for( i = 0; i < count; i ++)
{
cout << pl[i].name <<endl;
for( j = 0; j < pl[i].len; j ++)
{
cout <<" |----" << pl[i].ful[j].fulname << "(" << pl[i].ful[j].num << ")" << endl;
}
}
if( N != 0)
cout << endl;
}
return 0;
}