70pts求调
查看原帖
70pts求调
1386960
one_of_the_person楼主2024/8/27 15:46
#include<bits/stdc++.h>
using namespace std;
struct A{
    int x,y,si,b;
}d[10005];
int main(){
    bool flag[105][105]={};
    int head=0,tail=1,n,m,a[105][105]={};
    int dx[8]={0,0,1,-1,1,-1,1,-1},dy[8]={1,-1,0,0,1,-1,-1,1};
    cin>>m>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
        }
    }
    d[1].x=1;
    d[1].y=1;
    d[1].si=-1;
    d[1].b=0;
    flag[1][1]=1;
    while(head<tail){
        head++;
        for(int i=0;i<8;i++){
            if(i==d[head].si)continue;
            int xxx=d[head].x+dx[i]*a[d[head].x][d[head].y];
            int yyy=d[head].y+dy[i]*a[d[head].x][d[head].y];
            if(0<xxx&&xxx<=n&&0<yyy&&yyy<=m&&flag[xxx][yyy]==0){
                flag[xxx][yyy]=1;
                tail++;
                d[tail].x=xxx;
                d[tail].y=yyy;
                d[tail].si=i;
                d[tail].b=d[head].b+1;
                if(xxx==n&&yyy==m){
                    cout<<d[tail].b;
                    return 0;
                }
            }
        }
    }
    cout<<"NEVER";
    return 0;
}
2024/8/27 15:46
加载中...