Submission #754631

#TimeUsernameProblemLanguageResultExecution timeMemory
754631MilosMilutinovicZoo (COCI19_zoo)C++14
110 / 110
47 ms6228 KiB
#include <bits/stdc++.h> using namespace std; const int N = 1010; const int inf = 0x3f3f3f3f; const int dx[] = {1, 0, -1, 0}; const int dy[] = {0, 1, 0, -1}; int n, m, dist[N][N]; char s[N][N]; bool valid(int x, int y) { return 1 <= x && x <= n && 1 <= y && y <= m && s[x][y] != '*'; } int main() { scanf("%d%d", &n, &m); for (int i = 1; i <= n; i++) { scanf("%s", s[i] + 1); } deque<pair<int, int>> dq; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { dist[i][j] = inf; } } dist[1][1] = 1; dq.emplace_back(1, 1); while (!dq.empty()) { pair<int, int> p = dq.front(); dq.pop_front(); int x = p.first; int y = p.second; for (int d = 0; d < 4; d++) { int nx = x + dx[d]; int ny = y + dy[d]; if (!valid(nx, ny)) { continue; } int w = (s[x][y] != s[nx][ny] ? 1 : 0); if (dist[nx][ny] > dist[x][y] + w) { dist[nx][ny] = dist[x][y] + w; if (w == 0) { dq.emplace_front(nx, ny); } else { dq.emplace_back(nx, ny); } } } } int ans = 0; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (valid(i, j)) { ans = max(ans, dist[i][j]); } } } printf("%d\n", ans); return 0; }

Compilation message (stderr)

zoo.cpp: In function 'int main()':
zoo.cpp:13:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   13 |     scanf("%d%d", &n, &m);
      |     ~~~~~^~~~~~~~~~~~~~~~
zoo.cpp:15:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 |         scanf("%s", s[i] + 1);
      |         ~~~~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...