Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:Why Wa?

Posted by suying at 2009-09-26 19:26:58 on Problem 2225
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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator