제출 #264502

#제출 시각아이디문제언어결과실행 시간메모리
264502WLZMecho (IOI09_mecho)C++14
6 / 100
1079 ms7160 KiB
#include <bits/stdc++.h> using namespace std; const vector<int> dx = {0, 0, -1, 1}; const vector<int> dy = {1, -1, 0, 0}; int main() { ios::sync_with_stdio(false); cin.tie(0); int n, s; cin >> n >> s; vector<string> grid(n); queue< pair<int, int> > q1, q2; vector< vector<int> > dist1(n, vector<int>(n, -1)), dist2(n, vector<int>(n, -1)); int mr, mc, dr, dc; for (int i = 0; i < n; i++) { cin >> grid[i]; for (int j = 0; j < n; j++) { if (grid[i][j] == 'M') { q1.push({i, j}); dist1[i][j] = 0; mr = i; mc = j; } else if (grid[i][j] == 'H') { q2.push({i, j}); dist2[i][j] = 0; } else if (grid[i][j] == 'D') { dr = i; dc = j; } } } while (!q1.empty()) { int r = q1.front().first, c = q1.front().second; q1.pop(); for (int k = 0; k < 4; k++) { int nr = r + dx[k], nc = c + dy[k]; if (nr < 0 || nr >= n || nc < 0 || nc >= n || grid[nr][nc] == 'T' || dist1[nr][nc] != -1) { continue; } dist1[nr][nc] = dist1[r][c] + 1; q1.push({nr, nc}); } } while (!q2.empty()) { int r = q2.front().first, c = q2.front().second; q2.pop(); for (int k = 0; k < 4; k++) { int nr = r + dx[k], nc = c + dy[k]; if (nr < 0 || nr >= n || nc < 0 || nc >= n || grid[nr][nc] == 'T' || dist2[nr][nc] != -1) { continue; } dist2[nr][nc] = dist2[r][c] + s; q2.push({nr, nc}); } } int lo = 0, hi = n * n, ans = -1; for (int i = 0; i < 50; i++) { int mid = (lo + hi + 1) / 2; vector< vector<bool> > was(n, vector<bool>(n, false)); queue< pair<int, int> > q; q.push({mr, mc}); while (!q.empty()) { int r = q.front().first, c = q.front().second; q.pop(); for (int k = 0; k < 4; k++) { int nr = r + dx[k], nc = c + dy[k]; if (nr < 0 || nr >= n || nc < 0 || nc >= n || grid[nr][nc] == 'T' || dist1[nr][nc] + 4 * mid > dist2[nr][nc] || was[nr][nc]) { continue; } was[nr][nc] = true; q.push({nr, nc}); } } if (was[dr][dc]) { lo = mid; ans = mid; } else { hi = mid - 1; } } cout << ans << '\n'; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

mecho.cpp: In function 'int main()':
mecho.cpp:73:15: warning: 'dr' may be used uninitialized in this function [-Wmaybe-uninitialized]
   73 |     if (was[dr][dc]) {
      |               ^
#Verdict Execution timeMemoryGrader output
Fetching results...