求大佬看看BFS代码哪里错了

回复帖子

@刘谅闻 2019-12-03 16:51 回复
#include<bits/stdc++.h>
using namespace std;
int read()
{
    int x=0,k=1; 
    char ch=getchar();
    while(ch<'0' || ch>'9'){k=-1;ch=getchar();}
    while(ch>='0' && ch<='9'){x=x*10+ch-'0',ch=getchar();}
    return x*k;
}
char t[60][60];
int n,m;
bool Check(int x,int y);
struct node{int x,y;};
int num;
int a[4][2]={{-1,0},{0,-1},{1,0},{0,1}};
void bfs(int dx,int dy)
{
    num=1;
    queue<node>q;
    node start,next;
    start.x=dx;
    start.y=dy;
    q.push(start);
    while(!q.empty())
    {
        start=q.front();
        q.pop();
        cout<<"out:"<<start.x<<" "<<start.y<<endl;
        for(int i=0;i<4;++i)
        {
            next.x=start.x+a[i][0];
            next.y=start.y+a[i][1];
            if(Check(next.x,next.y)==true && t[next.x][next.y]=='.')
            {
                t[next.x][next.y]='#';
                ++num;
                q.push(next);
            }
        }
    }
    cout<<num;
}
int main()
{
    int n,m,dx,dy;
    n=read(),m=read();
    for(int i=0;i<n;++i)
    {
        for(int j=0;j<m;++j)
        {
            t[i][j]=getchar();
            if(t[i][j]=='@'){dx=i;dy=j;}
        }
    }
    num=0;
    bfs(dx,dy);
    return 0;
 }
bool Check(int x,int y)
{
    if(x<n && x>=0 && y>=0 && y<m) return true;
    else return false;
}
反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。