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 |
提交十几次了,RE,牛人给点测试数据,或是帮我看看我的数据结构!!#include"stdio.h" #include"malloc.h" struct task//任务的数据结构 { int begin; int last; struct task *next; }; struct node//块的数据结构,代表城市。 { struct task *next; }; void insert(struct node nd[],struct task *p,int k)//在对应的城市块k,添加任务p,按照结束时间递增插入。 { struct task *p1,*p2; if(nd[k].next==NULL) nd[k].next=p; else { p1=nd[k].next; while(p1!=NULL && (p->begin+p->last)>p1->begin+p1->last) { p2=p1; p1=p1->next; } if(p1==NULL) p2->next=p; else if(p1==nd[k].next) { nd[k].next=p; p->next=p1; } else { p2->next=p; p->next=p1; } } } int main() { struct node nd[20]; struct task *p1,*ps; int i,j,k,bl,select,spend=0; int blocks,tasks,men=0; int finish,more; int road[20][20],min; for(i=0;i<20;i++) nd[i].next=NULL; while(1) { scanf("%d%d",&blocks,&tasks); if(blocks==0 && tasks==0) break; finish=1; more=0; men=0; for(i=0;i<20;i++) for(j=0;j<20;j++) road[i][j]=0; for(i=0;i<blocks;i++) { for(j=0;j<blocks;j++) scanf("%d",&road[i][j]); } for(i=0;i<tasks;i++) { p1=(struct task*)malloc(sizeof(struct task)); p1->next=NULL; scanf("%d%d%d",&bl,&p1->begin,&p1->last); insert(nd,p1,bl-1); } //floyd算法 for(k=0;k<blocks;k++) for(i=0;i<blocks;i++) for(j=0;j<blocks;j++) { if(road[i][k]==-1 || road[k][j]==-1) continue; else if(road[i][j]==-1) road[i][j]=road[i][k]+road[k][j]; else if(road[i][j]>road[i][k]+road[k][j]) road[i][j]=road[i][k]+road[k][j]; } //接下来代码就不贴了。。。。。。。。如果上面的没问题,下面就是问题。。-_-! } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator