Submission #1316922

#TimeUsernameProblemLanguageResultExecution timeMemory
1316922ashikur_Tracks in the Snow (BOI13_tracks)C++20
100 / 100
484 ms115564 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; #define inf (ll)1e15 #define ll long long #define lll __int128_t #define pi pair<int, int> #define pl pair<ll, ll> #define vi vector<int> #define vl vector<ll> #define vd vector<double> #define mod 1000000007 // #define mod 998244353 #define pie acos(-1.0) #define LSOne(i) ((i) & -(i)) #define EPS 1e-9 vi dr = {1, 0, -1, 0}, dc = {0, 1, 0, -1}; int main(){ std::ios::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; vector<string> vtr(n); for(int i = 0; i < n; i++) cin >> vtr[i]; vector<vi> dist(n, vi(m, -1)); dist[0][0] = 1; deque<pi> que; que.push_back({0, 0}); int ans = 0; while(que.size()){ auto [i, j] = que.front(); que.pop_front(); ans = max(ans, dist[i][j]); for(int k = 0; k < 4; k++){ int r = i+dr[k], c = j+dc[k]; if(r < 0 || c < 0 || r >= n || c >= m) continue; if(vtr[r][c] == '.' || dist[r][c] != -1) continue; dist[r][c] = dist[i][j]; if(vtr[i][j] == vtr[r][c]){ que.push_front({r, c}); } else{ dist[r][c]++; que.push_back({r, c}); } } } cout << ans << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...