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 |
怎么在杭电能过 北大就过不了啊#include <stdio.h> #include <queue> using namespace std; bool flag[15][15][15]; char map[15][15][15]; char ss[10]; int p[6][3]={{-1,0,0},{1,0,0},{0,-1,0,},{0,1,0},{0,0,1},{0,0,-1}}; int c; int n; struct node { int x; int y; int z; bool operator==(const node & b) { return (x==b.x&&y==b.x&&z==b.z); } }; queue <node> Q; bool ok(node q) { if(q.x<0||q.x>=n||q.y<0||q.y>=n||q.z<0||q.z>=n) return false; else return true; } int main() { int i,j,k; while(scanf("%s",ss)!=EOF) { scanf("%d",&n); node s,e; getchar(); for(i=0;i<n;i++) { for(j=0;j<n;j++) { for(k=0;k<n;k++) { scanf("%c",&map[i][j][k]); } getchar(); } } scanf("%d%d%d",&s.x,&s.y,&s.z); scanf("%d%d%d",&e.x,&e.y,&e.z); memset(flag,0,sizeof(flag)); //BFS //printf("d"); while(!Q.empty()) { Q.pop(); } Q.push(s); int t=1,u=1,w,c=0; flag[s.z][s.x][s.y]=1; if(s.x==e.x&&s.y==e.y&&s.z==e.z) { printf("%d 0\n",n); continue; } while(t) { w=0; c++; if(u==0){c=0;break;} for(i=1;i<=u;i++) { node m=Q.front(); node m1; Q.pop(); for(j=0;j<6;j++) { m1.x=m.x+p[j][0]; m1.y=m.y+p[j][1]; m1.z=m.z+p[j][2]; if(ok(m1)&&flag[m1.z][m1.x][m1.y]==0&&map[m1.z][m1.x][m1.y]=='O') { w++; flag[m1.z][m1.x][m1.y]=1; Q.push(m1); //printf("%c\n",map[m1.x][m1.y][m1.z]); //printf("%d %d %d\n",m1.x,m1.y,m1.z); system("pause"); } if(m1.x==e.x&&m1.y==e.y&&m1.z==e.z) { t=0; break; } } //printf("d"); } u=w; } //getchar(); // scanf("%s",s); scanf("%s",ss); if(c==0) printf("NO ROUTE\n"); else printf("%d %d\n",n,c); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator