迷宫(bfs)

1,INF起码的,不会让你回头走啊。

2,typedef pair<int ,int > 用法没说清,没用对。

3,奇奇怪怪的。。

#include<iostream>
#include<queue>
#include<utility>
using namespace std;
int dx[]={1,-1,0,0};
int dy[]={0,0,1,-1};
int n,m,d[1005][1005],sx,sy,fx,fy;
char b[1005][1005];
const int INF=1e6;
typedef pair<int,int> p;
queue<p> que;r
int answer;
int bfs(int x,int y)
{
    que.push(p(x,y));
    d[x][y]=0;
    while(que.size())
    {
        p=que.front();
        que.pop();
        if(p.first==fx&&p.second==fy) break;
        
        for(int i=0;i<=3;i++)
        {
            int xx=p.first+dx[i];
            int yy=p.second+dy[i];
            if(xx>=1&&yy>=1&&xx<=n&&yy<=m&&b[xx][yy]!='#'&&d[xx][yy]=INF)
            {
                que.push(p(xx,yy))//人家这个是用括号的,用法还得再看看
                d[xx][yy]=d[p.first][p.second]+1;
                
            }
        }
    }
    return d[fx][fy];
}
int main(){
    cin>>n>>m;
    cin>>sx>>sy>>fx>>fy;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            cin>>b[i][j];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            d[i][j]=INF;
    answer=bfs(sx,sy);
    cout<<answer<<endl;
}

4,下次再搞吧

posted @ 2019-12-31 12:18  北月真好  阅读(195)  评论(0编辑  收藏  举报