| ||||||||||
| 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 | |||||||||
why wa?(附代码)#include <stdio.h>
#include <string.h>
char map[20][20][20], s[20];
int N, step[20][20][20];
int sx, sy, sz, anx, any, anz;
struct node
{
int x, y, z;
}Q[100000];
int dx[]={1,-1,0,0,0,0}, dy[]={0,0,1,-1,0,0}, dz[]={0,0,0,0,1,-1};
int ok(int a, int b, int c)
{
if(a>=0&&a<N&&b>=0&&b<N&&c>=0&&c<N)
return 1;
return 0;
}
void init()
{
int i, j, k;
scanf("%d%*c",&N);
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%d%d%d",&sy,&sx,&sz,&any,&anx,&anz);
map[anx][any][anz]='D';
scanf("%s",s);
}
void bfs()
{
int cntx, cnty, cntz, nextx, nexty,nextz, ans, i, j, k, tail=0, head=0;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
for(k=0;k<N;k++)
step[i][j][k]=0x7fffffff;
cntx=sx;cnty=sy;cntz=sz;
step[cntx][cnty][cntz]=0;
ans=step[anx][any][anz];
while(1)
{
for(i=0;i<6;i++)
{
nextx=cntx+dx[i];
nexty=cnty+dy[i];
nextz=cntz+dz[i];
if(ok(nextx,nexty,nextz)&&map[nextx][nexty][nextz]!='X')
{
if(map[nextx][nexty][nextz]=='D')
{
if(step[cntx][cnty][cntz]+1<ans)
ans=step[cntx][cnty][cntz]+1;
}
else if(step[cntx][cnty][cntz]+1<step[nextx][nexty][nextz])
{
step[nextx][nexty][nextz]=step[cntx][cnty][cntz]+1;
Q[++tail].x=nextx;
Q[tail].y=nexty;
Q[tail].z=nextz;
}
}
}
if(head==tail) break;
else
{
cntx=Q[++head].x;
cnty=Q[head].y;
cntz=Q[head].z;
}
}
if(ans==0x7fffffff)
printf("NO ROUTE\n");
else
printf("%d %d\n",N,ans);
}
int main()
{
while(scanf("%s",s)!=EOF)
{
init();
bfs();
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator