Submission
Status:
[PPPPPPPPP-SSSSSSSSSSSSSSSSSSSSSSSSSS]
Subtask/Task Score:
{0/100}
Score: 0
User: C12
Problemset: ย่องเบาหลบกับระเบิด
Language: cpp
Time: 0.044 second
Submitted On: 2026-01-01 20:35:41
#include <bits/stdc++.h>
using namespace std;
#define f first
#define s second
#define pii pair<ll,ll>
#define puii pair<ull,ull>
#define piii pair<ll,pii>
#define ll long long
#define ull unsigned long long
#define mp make_pair
#define mpiii(a,b,c) make_pair(a,make_pair(b,c));
// ll mod = 1000000007;
int board[1001][1001];
int view[1001][1001] = {0};
int posx[4] = {-1,1,0,0};
int posy[4] = {0,0,1,-1};
int nx,ny;
void solve(){
int n,m;
cin >> n >> m;
for(int i = 0;i < n;i++){
for(int j = 0;j < m;j++){
cin >> board[i][j];
}
}
for(int i = 0;i < n;i++){
for(int j = 0;j < m;j++){
if(board[i][j] == 0){
for(int k = 0;k < 4;k++){
nx = i + posx[k];
ny = j + posy[k];
if(nx < 0 || nx >= n || ny < 0 || ny >= m){
continue;
}
board[nx][ny] = -1;
}
}
}
}
queue<pii>q;
int st;
int cnt = 0;
int x,y;
for(int i = 0;i < n;i++){
if(board[i][0] > 0){
q.push(mp(i,0));
view[i][0] = 1;
}
}
while(1){
st = q.size();
cnt++;
while(st--){
x = q.front().first;
y = q.front().second;
q.pop();
for(int k = 0;k < 4;k++){
nx = x + posx[k];
ny = y + posy[k];
if(nx < 0 || nx >= n || ny < 0 || ny >= m || view[nx][ny] || board[nx][ny] <= 0){
continue;
}
view[nx][ny] = 1;
q.push(mp(nx,ny));
if(ny == m-1){
cout << (cnt + 1);
return;
}
}
}
if(q.empty()){
cout << -1;
return;
}
}
return;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
ll q;
// cin >> q;
// while(q--)
solve();
return 0;
}
/*
5 5
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 0 1
1 1 1 1 1
5 5
1 1 1 1 1
1 1 1 1 0
1 1 1 1 1
0 1 1 1 1
0 1 1 1 1
10 10
0 1 1 1 0 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 0 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 0 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 0 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 0
1 1 1 1 1 0 1 1 1 1
1 1 1 1 1 1 1 1 1 1
10 10
0 1 1 1 0 0 1 1 1 1
1 1 1 1 1 0 1 1 1 1
1 1 1 1 1 0 1 1 0 1
1 1 1 1 1 0 1 1 1 1
1 1 1 1 1 0 1 1 1 1
1 1 1 1 1 0 1 1 1 1
1 0 1 1 1 0 1 1 1 1
1 1 1 1 1 0 1 1 1 0
1 1 1 1 1 0 1 1 1 1
1 1 1 1 1 0 1 1 1 1
10 10
1 1 1 0 1 1 1 1 1 1
0 1 1 1 1 1 1 1 1 1
0 1 1 0 1 1 1 0 0 1
0 1 1 1 1 1 1 1 1 1
0 1 1 0 1 1 1 0 1 1
0 1 1 1 1 1 1 1 1 1
0 1 1 0 1 1 1 0 1 1
0 1 1 1 1 1 1 1 1 0
0 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 1 1 1 1
*/