Submission #776249

#TimeUsernameProblemLanguageResultExecution timeMemory
776249amine_arouaTracks in the Snow (BOI13_tracks)C++17
100 / 100
653 ms137276 KiB
#include <bits/stdc++.h> using namespace std; #define vi vector<int> #define vl vector<long long> #define vii vector<pair<int,int>> #define vll vector<pair<long long,long long>> #define pb push_back #define ll long long #define ld long double #define nl '\n' #define boost ios::sync_with_stdio(false) #define mp make_pair #define se second #define fi first #define fore(i, y) for(int i = 0; i < y; i++) #define forr(i,x,y) for(int i = x;i<=y;i++) #define forn(i,y,x) for(int i = y; i >= x; i--) #define all(v) v.begin(),v.end() #define sz(v) v.size() #define clr(v,k) memset(v,k,sizeof(v)) #define rall(v) v.rbegin() , v.rend() #define pii pair<int,int> #define pll pair<ll , ll> const ll MOD = 1e9 + 7; const ll INF = 1e9 + 1; ll gcd(ll a , ll b) {return b ? gcd(b , a % b) : a ;} // greatest common divisor (PGCD) ll lcm(ll a , ll b) {return a * (b / gcd(a , b));} // least common multiple (PPCM) // HERE IS THE SOLUTION vii coor = {{0 , 1} , {1 , 0} ,{-1 , 0} , {0 , -1}}; int main() { cin.tie(0); cout.tie(0); boost; int n , m; cin>>n>>m; char grid[n][m]; fore(i , n) { fore(j , m) { cin>>grid[i][j]; } } int dist[n][m]; pii cur = {0 , 0}; fore(i , n) { fore(j , m) { dist[i][j] = INF; } } dist[0][0] = 0; deque<pii> dq; dq.push_front(cur); while(!dq.empty()) { pii node = dq.front(); dq.pop_front(); for(auto p: coor) { int nx = p.fi + node.fi , ny = p.se + node.se; if(nx < 0 || ny < 0 || nx>=n || ny>=m || grid[nx][ny] == '.')continue; int w = 0; if(grid[nx][ny] != grid[node.fi][node.se]) w = 1; if(dist[nx][ny] > dist[node.fi][node.se] + w) { dist[nx][ny] = w + dist[node.fi][node.se]; if(w == 0) dq.push_front({nx , ny}); else dq.push_back({nx , ny}); } } } int ans = 0; fore(i , n) { fore(j , m) { if(grid[i][j] != '.') ans = max(ans , dist[i][j]); } } cout<<ans +1<<nl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...