Submission #1285200

#TimeUsernameProblemLanguageResultExecution timeMemory
1285200efegTracks in the Snow (BOI13_tracks)C++20
100 / 100
650 ms228452 KiB
#include <bits/stdc++.h> using namespace std; typedef tuple<int,int,int> iii; const int maxN = 4100; char a[maxN][maxN]; int dist[maxN][maxN]; int h,w; int dX[] = {1,-1,0,0}; int dY[] = {0,0,1,-1}; int main(){ ios_base::sync_with_stdio(NULL); cin.tie(NULL); cout.tie(NULL); cin >> h >> w; memset(dist,-1,sizeof(dist)); for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++){ cin >> a[i][j]; } } auto check = [&](int i,int j){ if (i > -1 && j > -1 && i < h && j < w && dist[i][j] == -1 && a[i][j] != '.') return true; return false; }; deque<iii> q; q.push_back({0,0,1}); int mx = 0; while (!q.empty()){ int i,j,d; tie(i,j,d) = q.front(); q.pop_front(); if (dist[i][j] != -1) continue; dist[i][j] = d; mx = max(mx,d); for (int x = 0; x < 4; x++){ int toi = i + dX[x],toj = j + dY[x]; if (check(toi,toj)){ if (a[i][j] == a[toi][toj]){ q.push_front({toi,toj,d}); } else q.push_back({toi,toj,d+1}); } } } cout << mx << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...