Submission #917149

#TimeUsernameProblemLanguageResultExecution timeMemory
9171490x34cTracks in the Snow (BOI13_tracks)C++17
100 / 100
891 ms781460 KiB
#include <bits/stdc++.h> #define ll long long #define pii pair<int, int> #define endl '\n' using namespace std; int N, M; vector<vector<bool>> vis; vector<vector<char>> grid; queue<pii> q; int mvt[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; void dfs(int r, int c, char let) { if (r < 0 || c < 0 || r >= N || c >= M || grid[r][c] == '.' || vis[r][c]) return; if (grid[r][c] != let) { q.push({r, c}); return; } vis[r][c] = true; for (int i = 0; i < 4; i++) { int rx = r + mvt[i][0], cx = c + mvt[i][1]; dfs(rx, cx, let); } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> N >> M; grid.resize(N, vector<char>(M)); vis.resize(N, vector<bool>(M, false)); for (int i = 0; i < N; i++) for (int j = 0; j < M; j++) cin >> grid[i][j]; q.push({0, 0}); int res = 0; while (!q.empty()) { int sz = q.size(); for (int _ = 0; _ < sz; _++) { int r, c; tie(r, c) = q.front(); q.pop(); dfs(r, c, grid[r][c]); } ++res; } cout << res << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...