标签:type define space name typedef 源代码 using 最短路 air
宽度优先搜索运用了队列(queue)在unility头文件中
源代码
#include<iostream>
#include<cstdio>
#include<queue>
#include<algorithm>
#include<utility>
using namespace std;
typedef pair<int,int> P;
#define INF 100000000
#define maxn 101
queue<P>que;
char mi[maxn][maxn];
int dx[]= {1,0,-1,0},dy[]= {0,1,0,-1};//四步移动运用两个数组
int sx,sy,gx,gy,N,M,d[maxn][maxn];
int dfs()
{
que.push(P(sx,sy));
d[sx][sy]=0;
while(que.size())
{
P p=que.front();
que.pop();
if(p.first==gx&&p.second==gy)
break;
for(int i=0; i<4; i++)
{
int nx=dx[i]+p.first,ny=dy[i]+p.second;
if(nx>=0&&nx<N&&ny>=0&&ny<M&&d[nx][ny]==INF&&mi[nx][ny]!=‘W‘)
{
que.push(P(nx,ny));
d[nx][ny]=d[p.first][p.second]+1;
}
}
}
return d[gx][gy];
}
int main()
{
while(cin>>N>>M)
{
for(int i=0; i<N; i++)
scanf("%s",mi[i]);
for(int i=0; i<N; i++)
for(int j=0; j<M; j++)
{
if(mi[i][j]==‘S‘)
{
sx=i;
sy=j;
}
if(mi[i][j]==‘G‘)
{
gx=i;
gy=j;
}
d[i][j]=INF;
}
int ans=dfs();
if(ans!=INF)
cout<<ans<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
标签:type define space name typedef 源代码 using 最短路 air
原文地址:https://www.cnblogs.com/Joe2019/p/12986468.html