Submission #1319292

#TimeUsernameProblemLanguageResultExecution timeMemory
1319292xnoelTracks in the Snow (BOI13_tracks)C++20
100 / 100
647 ms160560 KiB
#include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); //freopen("1.in","r",stdin); int n, m; cin >> n >> m; vector<vector<int>> grid(n, vector<int>(m,-1)); vector<vector<int>> dist(n, vector<int>(m,0)); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { char c; cin >> c; if (c=='F') grid[i][j]=1; else if (c=='R') grid[i][j]=2; } } int dx[] = {1,0,-1,0}; int dy[] = {0,1,0,-1}; deque<pair<int,int>> q; q.push_back({0,0}); dist[0][0]=1; while (!q.empty()) { auto [x,y] = q.front(); q.pop_front(); for (int i = 0; i < 4; i++) { int nx = x + dx[i]; int ny = y + dy[i]; if (nx<0 || nx>=n || ny<0 || ny>=m) continue; if (grid[nx][ny]==-1) continue; if (dist[nx][ny]!=0) continue; if (grid[nx][ny]==grid[x][y]) { q.push_front({nx,ny}); dist[nx][ny]=dist[x][y]; } else { q.push_back({nx,ny}); dist[nx][ny]=dist[x][y]+1; } } } int ans=0; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { ans=max(ans,dist[i][j]); } } cout<<ans<<"\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...