样例通过,RE求助

P1746 离开中山路

nod1212 @ 2021-12-04 23:28:43

#include<bits/stdc++.h>
using namespace std;
struct pointt{
    int xg;
    int yg;
    int step;
};
bool ma[1002][1002]; 
int n;
queue<pointt> q;
bool ch(pointt tm){
    bool fla=ma[tm.xg][tm.yg]||tm.xg>n||tm.yg>n||tm.xg<1||tm.yg<1;
    return !fla;
}
int main(){
    cin>>n;
    getchar();
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            char t=getchar();
            if(t=='0'){
                ma[i][j]=false;
            }
            else{
                ma[i][j]=true;
            }
        }
        getchar();
    }
    int xxx,yyy,xxs,yys;
    cin>>xxx>>yyy>>xxs>>yys;
    pointt a;
    a.xg=xxx;
    a.yg=yyy;
    a.step=0;
    q.push(a);
    while(1){
        if(q.front().xg==xxs&&q.front().yg==yys){
            cout<<q.front().step;
            return 0;
        }
        a=q.front();
        if(!ch(a)){
            q.pop();
            continue;
        }
        ma[a.xg][a.yg]=true;
        a.step++;
        q.pop();
        a.xg++;
        if(ch(a)){
            q.push(a);
        }
        a.xg-=2;
        if(ch(a)){
            q.push(a);
        }
        a.xg++;
        a.yg++;
        if(ch(a)){
            q.push(a);
        }
        a.yg-=2;
        if(ch(a)){
            q.push(a);
        }
    }
    return 0;
}

by ud2_ @ 2021-12-04 23:32:48

不要试图用 getchar() 跳过换行。你跳过的不是换行。


|