#include <stdio.h>
int b[10001][2];
int map[103][103];
int front;
int rear;
int d[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int step[103][103];
int up_or_down;
int cs=0;
void push(int x,int y)
{
b[rear][0]=x;
b[rear][1]=y;
rear++;
}
void bfs();
int main(){
int n,m;
while(scanf("%d",&up_or_down)==1)
{
scanf("%d %d",&n,&m);
for(int i=1;i<=n;++i)
{
map[i][0]=0;
step[i][0]=0;
for(int j=1;j<=m;++j)
{
scanf("%d",&map[i][j]);
step[i][j]=0;
}
map[i][m+1]=0;
step[i][m+1]=0;
}
for(int i=0;i<=m+1;++i)
{
map[0][i]=map[n+1][i]=0;
step[0][i]=step[n+1][i]=0;
}
for(int i=1;i<=m;++i)
{
if(map[1][i]==1)
{
push(1,i);
map[1][i]=0;
break;
}
}
step[b[front][0]][b[front][1]]=1;
cs++;
printf("Case %d:\n",cs);
bfs();
for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;++j)
printf("%d ",step[i][j]);
puts("");
}
}
return 0;
}
void bfs()
{
int lim;
if(up_or_down==1) lim=4;
else lim=3;
while(front<rear)
{
int nowx=b[front][0],nowy=b[front][1];
for(int i=0;i<lim;++i)
{
int tx=nowx+d[i][0],ty=nowy+d[i][1];
if(map[tx][ty])
{
map[tx][ty]=0;
push(tx,ty);
step[tx][ty]=step[nowx][nowy]+1;
}
}
front++;
}
return ;
}
為甚麼行不通?
都是WA:(line 2027)