Submission #1284640

#TimeUsernameProblemLanguageResultExecution timeMemory
1284640crunchymonTracks in the Snow (BOI13_tracks)C++20
100 / 100
1783 ms448900 KiB
#include<bits/stdc++.h> using namespace std; #define int long long int #define all(v) v.begin(),v.end() #define pb push_back #define v vector void solve(){ int n,m; cin >> n >> m; v<v<char>> grid(n , v(m , '.')); vector<vector<int>> weights(n , vector <int> (m , 0)); v<pair<int,int>> edges = {{1,0} , {-1 , 0} , {0 , 1} , {0 , -1}}; for (int i =0; i<n; i++){ for (int j = 0; j<m; j++){ char c; cin >> c; grid[i][j] = c; } } deque <v<int>> q; q.push_back({0,0}); int ans = 1; weights[0][0] = 1; while (q.size()){ v<int> temp= q.front(); int i = temp[0]; int j = temp[1]; ans = max(ans , weights[i][j]); q.pop_front(); for (auto [x , y] : edges){ int xx = x + i; int yy = y + j; if (xx >= 0 && xx <n && yy >=0 && yy<m && grid[xx][yy] != '.' && weights[xx][yy] == 0){ if (grid[xx][yy] == grid[i][j]){ q.push_front({xx, yy}); weights[xx][yy] = weights[i][j]; } else{ q.push_back({xx,yy}); weights[xx][yy] = weights[i][j] + 1; } } } } cout<<ans; // for (int i = 0; i<n; i++){ // for (int j = 0; j<m; j++){ // cout<<weights[i][j]<<" "; // } // cout<<endl; // } } int32_t main(){ // int n; cin >> n; int n = 1; for (int i = 0; i<n; i++){ solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...