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:Why Wa?In Reply To:Why Wa? Posted by:suying at 2009-09-26 19:19:39 > #include<iostream> > #include<queue> > #include<string.h> > using namespace std; > struct node > { > int x,y,z,step; > }c,f; > int n; > int startx,starty,startz; > int endx,endy,endz; > char map[12][12][12]; > int v[12][12][12]; > int total[12][12][12]; > int move[6][3]={{-1,0,0},{1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}}; > queue<node>a; > bool isok(int a,int b,int c) > { > if(a>=0&&a<n&&b>=0&&b<n&&c>=0&&map[a][b][c]=='O') > return true; > else > return false; > } > int bfs() > { > > c.x=startx; > c.y=starty; > c.z=startz; > c.step=0; > v[startx][starty][startz]=1; > a.push(c); > if(startx==endx&&starty==endy&&startz==endz) > return 0; > while(!a.empty()) > { > c=a.front(); > if(c.x==endx&&c.y==endy&&c.z==endz) > { > return c.step ; > } > a.pop(); > int i; > for(i=0;i<6;i++) > { > int sx,sy,sz; > sx=c.x+move[i][0]; > sy=c.y+move[i][1]; > sz=c.z+move[i][2]; > /* if(sx==endx&&sy==endy&&sz==endz) > return c.step+1;*/ > if(isok(sx,sy,sz)&&!v[sx][sy][sz]) > { > if(sx==endx&&sy==endy&&sz==endz) > return (c.step+1); > f.x=sx; > f.y=sy; > f.z=sz; > f.step=c.step+1; > v[sx][sy][sz]=1; > a.push(f); > > } > > } > } > return -1; > } > int main() > { > > char s[9]; > while(cin>>s>>n) > { > int i,j,k; > for(i=0;i<n;i++) > { > for(j=0;j<n;j++) > { > for(k=0;k<n;k++) > { > cin>>map[k][j][i]; > } > getchar(); > } > } > cin>>starty>>startx>>startz; > cin>>endy>>endx>>endz>>s; > map[endx][endy][endz]='O'; > memset(v,0,sizeof(v)); > while(!a.empty()) > a.pop(); > int ans=bfs(); > if(ans!=-1) > cout<<n<<" "<<ans<<endl; > else > cout<<"NO ROUTE"<<endl; > > } > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator