P1746 死循环求助
  • 板块学术版
  • 楼主TheGratefulDead
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/8/23 22:41
  • 上次更新2024/8/24 10:18:53
查看原帖
P1746 死循环求助
861429
TheGratefulDead楼主2024/8/23 22:41
#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
struct node{
    int rd,x,y,dis,vis;
}a[N][N];
int n,x1,y1,x2,y2;
int X[4] = {0,0,-1,1},Y[4] = {-1,1,0,0};
queue<node>q;
bool judge(int x_,int y_){
    if(x_<=n&&y_<=n&&!a[x_][y_].rd&&!a[x_][y_].vis) return true;
    return false;
}
void bfs(){
    a[x1][y1].vis = 1;
    q.push(a[x1][y1]);
    while(!q.empty()){
        int xx = q.front().x;
        int yy = q.front().y;
        q.pop();
        for(int i=0;i<4;i++){
            int xxx = xx + X[i];
            int yyy = yy + Y[i];
            if(judge(xxx,yyy)){
                a[xxx][yyy].vis = 1;
                a[xxx][yyy].dis = a[xx][yy].dis + 1;
                q.push(a[xxx][yyy]);
            }
        }
    }
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        string s;
        cin>>s;
        for(int j=0;j<n;j++){
            a[i][j+1].rd = s[j] - '0';
            a[i][j+1].x = i;
            a[i][j+1].y = j+1;
            a[i][j+1].dis = 0;
            a[i][j+1].vis = 0;
        }
    }
    cin>>x1>>y1>>x2>>y2;
    bfs();
    cout<<a[x2][y2].dis;
    return 0;
}
2024/8/23 22:41
加载中...