1746求助

回复帖子

@兹磁洛谷 2019-03-15 16:42 回复

这不是很简单的一道搜索吗?但是我调了太久了调不出来只好麻烦大家调了QAQ

# include <bits/stdc++.h>
# define rr register
const int N=1010;
int xx1,yy1,xx2,yy2;
char a[N][N];
bool vst[N][N];
int dx[4]={0,0,-1,1};
int dy[4]={-1,1,0,0};
struct node
{
    int x,y,step;
};
std::queue <node> k;
int n;
inline bool check(int x,int y)
{
    if(x<1||x>n||y<1||y>n||vst[x][y]||a[x][y]=='1')
        return false;
    return true;
}
int main()
{
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);
    std::cin>>n; 
    for(rr int i=1;i<=n;++i)
        for(rr int j=1;j<=n;++j)
            std::cin>>a[i][j];
    std::cin>>xx1>>yy1>>xx2>>yy2;
    k.push((node){xx1,yy1,0});
    while(!k.empty())
    {
        node tmp=k.front();
        k.pop();
        if(tmp.x==xx2&&tmp.y==yy2)
        {
            std::cout<<tmp.step;
            return 0;
        }
        vst[tmp.x][tmp.y]=true;
        for(rr int i=0;i<4;++i)
            if(check(tmp.x+dx[i],tmp.y+dy[i]))
                k.push((node){tmp.x+dx[i],tmp.y+dy[i],tmp.step+1});
    }
    return 0;
}
反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



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