Submission
Status:
[PPPPPPPP-SSSSSSSSSSSSSSSSSSSSSSSSSSS]
Subtask/Task Score:
{0/100}
Score: 0
User: achinhchin
Problemset: ย่องเบาหลบกับระเบิด
Language: cpp
Time: 0.039 second
Submitted On: 2025-11-24 23:05:09
#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);
}