Submission

Status:

[PPPPPPPP-SSSSSSSSSSSSSSSSSSSSSSSSSSS]

Subtask/Task Score:

{0/100}

Score: 0

User: achinhchin

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

Language: cpp

Time: 0.040 second

Submitted On: 2025-11-24 23:05:06

#include<iostream>
#include<utility>
#include<queue>
using namespace std;
typedef long long l;
#define f first
#define s second
#define pl pair<l,l>
#define pll pair<l,pl>
queue<pll> Q;
pll T;
l n,m,i,j,a,b,A[1002][1002],d[6];
pl D[]={{0,1},{1,1},{0,-1},{-1,1},{1,0},{-1,-1},{-1,0},{1,-1}};
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>>A[i][j];
  for(i=1;i<=n;i++)for(j=1;j<=m;j++)if(!A[i][j])for(auto k:D)A[i+k.f][j+k.s]=-1;
  for(i=1;i<=n;i++)if(A[i][1])Q.push({1,{i,1}});
  while(!Q.empty()) {
    if((T=Q.front()).s.s==m)break;Q.pop();
    for(i=0;i<8;i+=2)if(A[a=T.s.f+D[i].f][b=T.s.s+D[i].s]>0)Q.push({T.f+1,{a,b}}),A[a][b]=0;
  }cout<<(Q.empty()?-1:Q.front().f);
}