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得我都想哭了~~~郁闷ing``#include <stdio.h> char min1(char x,char y) { return x<y?x:y; } int main() { unsigned short d[301]={0},min,t,D,T=0; struct junction { char c,r,t[2],c0,r0,c1,r1; }j[301]; char map[301][301]={0},sc,de,mark[301]={0},c; short n,m,i,j1,j2,wait; scanf("%d %d %d %d",&sc,&de,&n,&m); for(i=1;i<=n;i++) { getchar(); c=getchar(); scanf("%d %d %d",&j[i].r,&j[i].t[0],&j[i].t[1]); if(c=='B') j[i].c0=0; else j[i].c0=1; j[i].r0=j[i].r; } j[sc].c=j[sc].c0; for(i=1;i<=m;i++) { scanf("%d %d %d",&j1,&j2,&c); map[j1][j2]=map[j2][j1]=c; } j2=sc; while(1) { j1=j2; mark[j1]=1; min=60000; for(i=1;i<=n;i++) { if(mark[i]==0&&map[j1][i]!=0) { if(j[i].r0>T) {j[i].c1=j[i].c0; j[i].r1=j[i].r0-T;} else { t=(T-j[i].r0)%(j[i].t[0]+j[i].t[1]); if(t<j[i].t[!j[i].c0]) {j[i].c1=!j[i].c0; j[i].r1=j[i].t[!j[i].c0]-t;} else {j[i].c1=j[i].c0; j[i].r1=j[i].t[0]+j[i].t[1]-t;} } if(j[j1].c==j[i].c1) wait=0; else { if(j[j1].r!=j[i].r1) wait=min1(j[j1].r,j[i].r1); else { if(j[j1].t[j[i].c1]!=j[i].t[j[j1].c]) wait=j[i].r1+min1(j[j1].t[j[i].c1],j[i].t[j[j1].c]); else { if(j[j1].t[j[j1].c]!=j[i].t[j[i].c1]) wait=j[i].r1+j[j1].t[j[i].c1]+min1(j[j1].t[j[j1].c],j[i].t[j[i].c1]); else wait=-1; } } } if(wait!=-1) { D=wait+map[j1][i]+T; if(D<d[i]||d[i]==0) { d[i]=D; if(j[i].r0>D) {j[i].c=j[i].c0; j[i].r=j[i].r0-D;} else { t=(D-j[i].r0)%(j[i].t[0]+j[i].t[1]); if(t<j[i].t[!j[i].c0]) {j[i].c=!j[i].c0; j[i].r=j[i].t[!j[i].c0]-t;} else {j[i].c=j[i].c0; j[i].r=j[i].t[0]+j[i].t[1]-t;} } } } if(d[i]!=0&&d[i]<min) {min=d[i]; j2=i;} } } if(min==60000) goto no; if(j2==de) goto yes; T=d[j2]; } yes:printf("%d\n",d[de]);return 0; no: printf("0\n");return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator