Submission #83785

#TimeUsernameProblemLanguageResultExecution timeMemory
83785teomrnTracks in the Snow (BOI13_tracks)C++14
97.81 / 100
2080 ms988380 KiB
#include <bits/stdc++.h> using namespace std; char mat[4010][4010]; vector <pair <int, int>> de_add, added, dir = { { -1, 0 }, { 1, 0 }, { 0, -1 }, { 0, 1 } }; bool viz[4010][4010]; int n, m; bool is_ok(int a, int b) { return (a > 0 && a <= n && b > 0 && b <= m); } void dfs(int a, int b, char c) { if (mat[a][b] != c || viz[a][b] || !is_ok(a, b)) return; viz[a][b] = 1; de_add.push_back({ a, b }); for (auto i : dir) dfs(a + i.first, b + i.second, c); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> m; for (int i = 1; i <= n; i++) cin >> (mat[i] + 1); int ans = 0; char act = mat[1][1]; if (act == '.') return cout << 0, 0; dfs(1, 1, act); while (!de_add.empty()) { swap(de_add, added); de_add.clear(); ans++; act = (act == 'F' ? 'R' : 'F'); for (auto i : added) for (auto j : dir) dfs(i.first + j.first, i.second + j.second, act); } cout << ans << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...