Submission
Status:
[PPPPPPPPTSSSSSSSSSSSSSSSSSSSSSSSSSSS]
Subtask/Task Score:
{0/100}
Score: 0
User: Pxnny
Problemset: ย่องเบาหลบกับระเบิด
Language: cpp
Time: 1.085 second
Submitted On: 2026-03-20 15:34:25
#include <bits/stdc++.h>
using namespace std;
#define piii pair<pair<int, int>, int>
vector<vector<int>> grid(1005, vector<int>(1005)), cgrid(1005, vector<int>(1005));
int n, m;
vector<int> ct;
int yy[] = {-1, 0, 0, 1, -1, -1, 1, 1};
int xx[] = {0, -1, 1, 0, 1, -1, 1, -1};
void mark(int y, int x){
for(int i=0; i<8; i++){
int ny = y + yy[i];
int nx = x + xx[i];
if(ny <0 || ny>=n || nx<0 || nx>=m) continue;
grid[ny][nx] = 0;
}
}
void floodfill(int yi, int xi){
queue<piii> q;
q.push({{yi, xi}, 1});
while(!q.empty()){
int y = q.front().first.first;
int x = q.front().first.second;
int t = q.front().second;
q.pop();
if(grid[y][x] == 0)continue;
grid[y][x] = 0;
//cout << y << " "<< x << " " << t << endl;
if(x == m-1){
ct.push_back(t);
return;
}
for(int i=0;i <4; i++){
int ny = y + yy[i];
int nx = x + xx[i];
if(ny <0 || ny>=n || nx<0 || nx>=m) continue;
if(grid[ny][nx] == 0) continue;
q.push({{ny, nx}, t+1});
}
}
}
int main(){
ios_base::sync_with_stdio(0), cin.tie(0);
cin >> n >> m;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cin >> grid[i][j];
cgrid[i][j] = grid[i][j];
}
}
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
if(cgrid[i][j] == 0){
mark(i, j);
}
}
}
/*for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cout << grid[i][j];
}
cout << endl;
}*/
cgrid = grid;
for(int i=0; i<n; i++){
grid = cgrid;
if(grid[i][0] != 0){
//cout << grid[i][0]<< endl;
//cout << i << endl;
floodfill(i, 0);
}
}
/*for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cout << grid[i][j];
}
cout << endl;
}*/
if(ct.size() == 0){
cout << -1;
return 0;
}
sort(ct.begin(), ct.end());
cout << ct[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
3 3
1 1 1
1 0 1
1 1 1
*/