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<iostream> using namespace std; #define maxn 20 #define maxl 20 #define maxq 1000 int X,Y,A,B,C,D; bool obs[10][maxn][maxn],done[maxn][maxn][10]; struct node{int x,y,f,s;}; node q[maxq]; inline int change(int face,int move) { if (face==1) {if (move==1) return 5;else if (move==2) return 3;else if (move==3) return 2;else return 4;} else if (face==2) {if (move==1) return 1;else if (move==3) return 6;else return 2;} else if (face==3) {if (move==2) return 6;else if (move==4) return 1;else return 3;} else if (face==4) {if (move==2) return 1;else if (move==4) return 6;else return 4;} else if (face==5) {if (move==1) return 6;else if (move==3) return 1;else return 5;} else {if (move==1) return 2;else if (move==2) return 4;else if (move==3) return 5;else return 3;} } int main() { freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); int x,y,f,head,tail,now; char str[maxl]; scanf("%d%d%d%d%d%d",&X,&Y,&A,&B,&C,&D); scanf("\n"); memset(obs,0,sizeof obs); while (scanf("%s",&str)!=EOF) { if (str[0]=='v') now=0; else if (str[0]=='h') now=1; else { x=atoi(str); scanf("%d",&y); obs[now][x][y]=true; } } head=0; tail=1; q[1].x=A; q[1].y=B; q[1].f=1; q[1].s=0; memset(done,0,sizeof(done)); done[A][B][1]=true; while (head<tail) { head++; x=q[head].x; y=q[head].y; f=q[head].f; if (x>1 && !obs[0][x-1][y] && !done[x-1][y][change(f,1)]) { tail++; done[x-1][y][change(f,1)]=true; q[tail].x=x-1; q[tail].y=y; q[tail].f=change(f,1); q[tail].s=q[head].s+1; if (q[tail].x==C && q[tail].y==D && q[tail].f==1) { printf("%d\n",q[tail].s); return 0;} } if (x<X && !obs[0][x][y] && !done[x+1][y][change(f,3)]) { tail++; done[x+1][y][change(f,3)]=true; q[tail].x=x+1; q[tail].y=y; q[tail].f=change(f,3); q[tail].s=q[head].s+1; if (q[tail].x==C && q[tail].y==D && q[tail].f==1) { printf("%d\n",q[tail].s); return 0;} } if (y>1 && !obs[1][x][y-1] && !done[x][y-1][change(f,4)]) { tail++; done[x][y-1][change(f,3)]=true; q[tail].x=x; q[tail].y=y-1; q[tail].f=change(f,4); q[tail].s=q[head].s+1; if (q[tail].x==C && q[tail].y==D && q[tail].f==1) { printf("%d\n",q[tail].s); return 0;} } if (y<Y && !obs[1][x][y] && !done[x][y+1][change(f,2)]) { tail++; done[x][y+1][change(f,2)]=true; q[tail].x=x; q[tail].y=y+1; q[tail].f=change(f,2); q[tail].s=q[head].s+1; if (q[tail].x==C && q[tail].y==D && q[tail].f==1) { printf("%d\n",q[tail].s); return 0;} } } printf("%s\n","no"); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator