写完程序检查一遍发现错误远比WA之后再改正好得多。
/*
* hdu-1263
* mike-w
* 2012-4-21
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_SIZE 128
#define STR_LEN 100
typedef struct _item
{
char name[STR_LEN];
char from[STR_LEN];
int count;
}item;
item fruit[MAX_SIZE];
int N,M;
int comp(const void *e1, const void *e2)
{
int ret=strcmp(((item*)e1)->from,((item*)e2)->from);
if(!ret)
ret=strcmp(((item*)e1)->name,((item*)e2)->name);
return ret;
}
int main(void)
{
#ifndef ONLINE_JUDGE
freopen("in","r",stdin);
#endif
int count,i,j;
scanf("%d",&N);
while(N-->0)
{
scanf("%d",&M);
count=0;
for(i=0;i<M;i++)
{
scanf("%s%s%d",fruit[count].name,fruit[count].from,&(fruit[count].count));
for(j=0;j<count;j++) /* fruit has same name and from exists? */
if(!strcmp(fruit[count].name,fruit[j].name)
&& !strcmp(fruit[count].from,fruit[j].from))
break;
if(j<count) /* find same kind */
fruit[j].count+=fruit[count].count;
else
count++;
}
qsort(fruit,count,sizeof(item),comp); /* sort by from */
for(i=0;i<count;)
{
printf("%s\n",fruit[i].from);
for(j=i; j<count && !strcmp(fruit[i].from,fruit[j].from); j++)
printf(" |----%s(%d)\n",fruit[j].name,fruit[j].count);
i=j;
}
if(N)
putchar('\n');
}
return 0;
}