Submission #1150007

#TimeUsernameProblemLanguageResultExecution timeMemory
1150007swayam78Tracks in the Snow (BOI13_tracks)C++20
100 / 100
476 ms161032 KiB
#include <bits/stdc++.h> using namespace std; /* #include<Luck> Compete against Yourself. Author - swayam_wish */ #define ll long long #define pii pair<ll, ll> #define piii pair<ll, pair<ll, ll>> #define pis pair<int, string> #define db double int mod = 1e9+7; ll gcd(ll a, ll b){ if(min(a,b) == 0){ return max(a,b); } if((a%b) == 0){ return b; } return gcd(b,a%b); } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int t; t = 1; while(t--){ int h , w; cin >> h >> w; vector<vector<char>> grid(h,vector<char>(w)); for(int i = 0; i<h; i++){ for(int j = 0; j<w; j++){ cin >> grid[i][j]; } } vector<vector<int>> vis(h,vector<int>(w,0)); deque<pii> dq; dq.push_back({0,0}); int delx[] = {0,0,1,-1}; int dely[] = {1,-1,0,0}; vis[0][0] = 1; int ans = 1; while(!dq.empty()){ auto it = dq.front(); dq.pop_front(); int x = it.first; int y = it.second; int cost = vis[x][y]; ans = max(ans,cost); for(int i = 0 ; i<4; i++){ int cx = x + delx[i]; int cy = y + dely[i]; if(cx<0 || cy<0 || cx==h || cy==w || vis[cx][cy]!=0 || grid[cx][cy]=='.'){ continue; } int wt = (grid[cx][cy] == grid[x][y]) ? 0 : 1; int tot = cost + wt; vis[cx][cy] = tot; if(wt){ dq.push_back({cx,cy}); } else{ dq.push_front({cx,cy}); } } } cout<<ans<<endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...