제출 #1239401

#제출 시각아이디문제언어결과실행 시간메모리
1239401ikrogipogiMaze (JOI23_ho_t3)C++20
0 / 100
0 ms328 KiB
#include <iostream> #include <deque> #include <vector> #include <string> #include <algorithm> using namespace std; const int INF = 1e9; int R, C, N, Sr, Sc, Gr, Gc; int dx[] = {-1, 1, 0, 0}; int dy[] = {0, 0, -1, 1}; int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> R >> C >> N; cin >> Sr >> Sc >> Gr >> Gc; Sr--, Sc--, Gr--, Gc--; vector<string> A(R); for (int i = 0; i < R; ++i) cin >> A[i]; vector<vector<int>> dist(R, vector<int>(C, INF)); dist[Sr][Sc] = 0; deque<pair<int, int>> dq; dq.push_front({Sr, Sc}); while (!dq.empty()) { int x = dq.front().first; int y = dq.front().second; dq.pop_front(); for (int d = 0; d < 4; ++d) { int nx = x + dx[d]; int ny = y + dy[d]; if (nx >= 0 && ny >= 0 && nx < R && ny < C) { if (A[nx][ny] == '.' && dist[nx][ny] > dist[x][y]) { dist[nx][ny] = dist[x][y]; dq.push_front({nx, ny}); } } } for (int i = max(0, x - N + 1); i <= min(x, R - N); ++i) { for (int j = max(0, y - N + 1); j <= min(y, C - N); ++j) { for (int a = i; a < i + N; ++a) { for (int b = j; b < j + N; ++b) { if (A[a][b] == '#' && dist[a][b] > dist[x][y] + 1) { dist[a][b] = dist[x][y] + 1; dq.push_back({a, b}); A[a][b] = '.'; } } } } } } cout << dist[Gr][Gc] << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...