Submission
Status:
[PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: Nay-O
Problemset: ย่องเบาหลบกับระเบิด
Language: cpp
Time: 0.062 second
Submitted On: 2026-03-26 13:35:43
#include<bits/stdc++.h>
using namespace std;
using pii = array<int,3>;
bool vis[1005][1005];
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
int main(){
ios_base::sync_with_stdio(false); cin.tie(NULL);
int n,m; cin>>n>>m;
int arr[n][m];
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cin>>arr[i][j];
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(arr[i][j]!=0) continue;
for(int a = i-1;a<=i+1;a++){
for(int b = j-1; b<=j+1;b++){
if(a<0||a>n-1||b<0||b>m-1||arr[a][b]==0) continue;
arr[a][b]=2;
}
}
}
}
queue<pii> q;
for(int i = 0; i < n; i++){
q.push({i,0,1});
}
while(!q.empty()){
int a = q.front()[0], b = q.front()[1], c = q.front()[2];
q.pop();
if(b==m-1){
cout << c;
return 0;
}
for(int i = 0; i < 4; i++){
int yy = a+dy[i],xx=b+dx[i];
if(yy<0||yy>n-1||xx<0||xx>m-1||vis[yy][xx]||arr[yy][xx]!=1) continue;
vis[yy][xx]=true;
q.push({yy,xx,c+1});
}
}
cout << -1;
return 0;
}