Submission #1261094

#TimeUsernameProblemLanguageResultExecution timeMemory
1261094nazar_shchTracks in the Snow (BOI13_tracks)C++20
100 / 100
877 ms174124 KiB
#include <bits/stdc++.h> #define ll long long #define ff first #define ss second #define pb push_back #define endl '\n' using namespace std; const int N=4e3 + 7; const int mod = 1e9 + 7; const ll inf = 1e12; ll dist[N][N]; string s[N]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0); int n, m; cin>>n>>m; for(int i=0;i<n;i++){ cin>>s[i]; } dist[0][0] = 1; deque<pair<int, int>>q; q.pb({0, 0}); ll ans = 0; while(!q.empty()){ auto cur = q.front();q.pop_front(); ans = max(ans, dist[cur.ff][cur.ss]); // cout<<cur.ff<<" "<<cur.ss<<" "<<dist[cur.ff][cur.ss]<<endl; vector<pair<int, int>>dv = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; for(auto d: dv){ int x = cur.ff + d.ff; int y = cur.ss + d.ss; if(x < n && x >= 0 && y < m && y >= 0 && dist[x][y] == 0 && s[x][y] != '.'){ if(s[cur.ff][cur.ss] == s[x][y]){ dist[x][y] = dist[cur.ff][cur.ss]; q.push_front({x, y}); } else { dist[x][y] = dist[cur.ff][cur.ss] + 1; q.push_back({x, y}); } } } } cout<<ans<<endl; /*/ RRRRFR RRF RF RR */ }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...