Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
一直wa,测试了许多例子都没出错,晕,哪位大牛路过看下,谢啦!#include <stdio.h> #include <string.h> typedef struct arcNode { int son,dif; struct arcNode *next; }arcNode; typedef struct { char name[128]; int age; struct arcNode *next; }Node; typedef struct List { char *name; struct List *next; }List; Node d[128]; List a[128]; bool flag[128]; int pos,start; void init() { for(int i=0;i<128;i++) { d[i].next=NULL; a[i].name=""; a[i].next=NULL; } } int locate(char *s) { int i; for(i=0;i<pos;i++) if(strcmp(s,d[i].name)==0) return i; strcpy(d[pos].name,s); if(strcmp(s,"Ted")==0) { d[pos].age=100; start=pos; } pos++; return pos-1; } //桶排+插入排序。 void insert(int x) { int index=d[x].age; List *p=&a[index],*q,*ptr; while(p&&strcmp(p->name,d[x].name)<0) { q=p; p=p->next; } ptr=new List; ptr->name=d[x].name; ptr->next=q->next; q->next=ptr; } //从ted开始DFS. void DFS(int x) { flag[x]=true; insert(x); //插入桶中。 for(arcNode *p=d[x].next;p;p=p->next) if(!flag[p->son]) { d[p->son].age=d[x].age-p->dif; DFS(p->son); } } int main() { int t,i,differ,n,c=0,px,py; arcNode *ptr; char fn[128],sn[128]; scanf("%d",&t); while(t--) { scanf("%d",&n); init(); for(pos=i=0;i<n;i++) { scanf("%s%s%d",fn,sn,&differ); px=locate(fn); py=locate(sn); ptr=new arcNode; ptr->son=py; ptr->dif=differ; ptr->next=d[px].next; d[px].next=ptr; } DFS(start); printf("DATASET %d\n",++c); for(i=99;i>0;i--) { List *pt=a[i].next; while(pt) { printf("%s %d\n",pt->name,i); pt=pt->next; } } memset(flag,false,sizeof(flag)); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator