Submission #1145144

#TimeUsernameProblemLanguageResultExecution timeMemory
1145144catashiro31Tracks in the Snow (BOI13_tracks)C++20
100 / 100
482 ms126868 KiB
#include<bits/stdc++.h> #define pb push_back #define fi first #define se second #define endl "\n" #define mod 1000000007 using ll = long long; using namespace std; const string NoF = "Name_of_File"; int h, w; vector<vector<int>> grid(4000,vector<int>(4000,0)); int dx[4] = {0,0,1,-1}; int dy[4] = {1,-1,0,0}; bool inside(int x, int y) { return (0 <= x && x < h && 0 <= y && y < w && grid[x][y] == 0); } void solve() { cin >> h >> w; vector<string> snow(h); for (string &x : snow) cin >> x; deque<pair<int,int>> dq; dq.push_back({0,0}); grid[0][0] = 1; int kq = 0; while (!dq.empty()) { auto [u,v] = dq.front(); dq.pop_front(); kq = max(kq,grid[u][v]); for (int i = 0 ; i < 4; i++) { int x = u + dx[i], y = v + dy[i]; if (!inside(x,y) || snow[x][y] == '.' ) continue; if (snow[u][v] == snow[x][y]) { dq.push_front({x,y}); grid[x][y] = grid[u][v]; } else { dq.push_back({x,y}); grid[x][y] = grid[u][v] + 1; } } } cout << kq; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); // freopen((NoF + ".in").c_str(),"r",stdin); // freopen((NoF + ".out").c_str(),"w",stdout); solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...