RE求调 玄关
  • 板块学术版
  • 楼主Atwi_llljx
  • 当前回复10
  • 已保存回复10
  • 发布时间2023/7/27 08:14
  • 上次更新2023/11/3 07:27:43
查看原帖
RE求调 玄关
886208
Atwi_llljx楼主2023/7/27 08:14

原题

/*

*/
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int A[100]={0,-1,1},B[100]={0,0,0,-1,1};
int n,t,bx[10100],by[10100];
char s[11000][11000];
bool dx[11000][11000];
struct a1{
    int xx,yy,bs;
}qq,qqq;
queue<a1> q;
int main(){
    scanf("%d%d",&n,&t);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++){
            cin>>s[i][j];
            switch(s[i][j]){
                case 'A':
                    qq.xx=i;
                    qq.yy=j;
                    break;
                case 'B':
                    bx[0]=i;
                    by[0]=j;
                    break;
            }
        }
    dx[qq.xx][qq.yy]=1;
    for(int i=1;i<=t;scanf("%d%d",&bx[i],&by[i]),i++);
    q.push(qq);
    for(;qq.bs<=t;){
        qq=q.front();
        q.pop();
        if(qq.xx==bx[qq.bs]&&qq.yy==by[qq.bs]){
            printf("%d",qq.bs);
            return 0;
        }
        qq.bs++;
        for(int i=1;i<=4;i++){
            int xxx=qq.xx+A[i],yyy=qq.yy+B[i];
            if(xxx<1||yyy<1||xxx>n||yyy>n)
                continue;
            if(dx[xxx][yyy]==0&&s[xxx][yyy]!='*'){
                dx[xxx][yyy]=1;
                qqq=qq;
                qqq.xx=xxx;
                qqq.yy=yyy;
                q.push(qqq);
            }
        }
    }
    printf("-1");
    return 0;
}
2023/7/27 08:14
加载中...