dis[ss.x][ss.y][dd]>dis[ss.x][ss.y][ss.di]+1) { dis[ss.x][ss.y][dd]=dis[ss.x][ss.y][ss.di]+1; q.push(Point(ss.x,ss.y,dd,ss2.t)); } dd=(ss2.di-1+4)%4; if(dis[ss.x][ss.y][dd]>dis[ss.x][ss.y][ss.di]+1) { dis[ss.x][ss.y][dd]=dis[ss.x][ss.y][ss.di]+1; q.push(Point(ss.x,ss.y,dd,ss2.t)); } dd=(ss2.di+1)%4; if(dis[ss.x][ss.y][dd]>dis[ss.x][ss.y][ss.di]+1) { dis[ss.x][ss.y][dd]=dis[ss.x][ss.y][ss.di]+1; q.push(Point(ss.x,ss.y,dd,ss2.t)); } int x=ss.x+di[ss.di][0]; int y=ss.y+di[ss.di][1]; if(x>=0&&y>=0&&x
dis[ss.x][ss.y][ss.di]+1) { dis[x][y][ss2.di]=dis[ss.x][ss.y][ss.di]+1; q.push(Point(x,y,ss2.di,dis[x][y][ss2.di])); } } int ans=inf; for(int i=0; i<4; i++) ans=min(ans,dis[enx][eny][i]); if(ans==inf-1) printf("YouBadbad\n"); else printf("%d\n",ans); } return 0; }
?
|