Submission

Status:

[-SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS]

Subtask/Task Score:

{0/100}

Score: 0

User: achinhchin

Problemset: ย่องเบาหลบกับระเบิด

Language: cpp

Time: 0.004 second

Submitted On: 2026-02-25 03:00:39

#include <climits>
#include<iostream>
#include<utility>
#include<queue>
#define f first
#define s second
#define fr front
using namespace std;
typedef long long l;
l n,m,i,j,k,t,a,b,D[8][2]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,1},{-1,0},{-1,-1}},mn=LONG_LONG_MAX;
queue<pair<l,pair<l,l>>>Q;
pair<l,pair<l,l>>T;
bool A[1002][1002];
int main(){
  cin.tie(nullptr)->sync_with_stdio(0);
  cin>>n>>m;
  for(i=1;i<=n;i++)for(j=1;j<=m;j++){
    cin>>t;
    if(!t){
      A[i][j]=1;
      for(auto k:D)A[i+k[0]][j+k[1]]=1;
    }
  }for(i=1;i<=n;i++)if(!A[i][1])Q.push({1,{i,1}});
  while(!Q.empty()){
    cout<<Q.fr().f<<' '<<Q.fr().s.f<<' '<<Q.fr().s.s<<'\n';
    if(!A[Q.fr().s.f][Q.fr().s.s]){
      A[a=Q.fr().s.f][b=Q.fr().s.s]=1;
      if(b==m)mn=min(Q.fr().f,mn);
      for(i=0;i<8;i+=2)
        if(!A[a=a+D[i][0]][b=b+D[i][1]]&&a<=n&&b<=n)
          Q.push({Q.fr().f+1,{a,b}});
    }Q.pop();
  }cout<<(mn<LONG_LONG_MAX?mn:-1);
}