您的位置:首页 > 其它

bfs最短路

2015-07-05 22:15 323 查看
6 5

1 1 0 1 1

1 0 1 1 1

1 0 1 0 0

1 0 1 1 1

1 1 1 0 1
1 1 1 1 1

#include<cstdio>
#include<cstring>

using namespace std;

const int maxn=100;

int maps[maxn][maxn];
int mark[maxn][maxn];
int queues[maxn*maxn];
int m,n;

void bfs()
{
int i=0,ps=0,j=0,sum=0,now=0;
queues[ps++]=0;
while(now<=ps)
{
if(i==0&&j==n-1)
break;
i=queues[now]/100;
j=queues[now++]%100;
if(i+1<m&&maps[i+1][j]==1&&mark[i+1][j]==0){
queues[ps++]=(i+1)*100+j;
mark[i+1][j]=1;
printf("%d %d\n",i+1,j);
}
if(j+1<n&&maps[i][j+1]==1&&mark[i][j+1]==0){
queues[ps++]=i*100+j+1;
mark[i][j+1]=1;
printf("%d %d\n",i,j+1);
}
//getchar();
sum++;
}
printf("%d\n",sum);
}

int main()
{

int i,j,sum,ps;
while(scanf("%d %d",&m,&n)!=EOF)
{
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&maps[i][j]);
memset(mark,0,sizeof(mark));
bfs();
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: