Submission #1224830

#TimeUsernameProblemLanguageResultExecution timeMemory
1224830shivamTracks in the Snow (BOI13_tracks)C++20
100 / 100
531 ms110892 KiB
#include<bits/stdc++.h> using namespace std; int dx[4] = {0,0,1,-1}; int dy[4] = {1,-1,0,0}; const int inf = 1e9+7; void solve(){ int h,w ; cin >> h >> w ; vector<string>v(h+1) ; vector<vector<int>>dist(h+1,vector<int>(w+1,inf)) ; for(int i=1;i<=h;i++){ string s; cin>>s; v[i] = " " + s; } deque<pair<int,int>>q; q.push_back({1,1}); dist[1][1] = 0; while(!q.empty()){ auto pp = q.front(); q.pop_front(); int x = pp.first; int y = pp.second; char cur = v[x][y]; for(int i=0;i<4;i++){ int nx = x+dx[i]; int ny = y+dy[i]; if(nx<1 || nx>h || ny<1 || ny>w)continue; if(v[nx][ny] == cur && dist[nx][ny] > dist[x][y]){ dist[nx][ny] = dist[x][y]; q.push_front({nx,ny}); } else if(v[nx][ny] == (cur^'F'^'R') && dist[nx][ny] > dist[x][y] + 1){ dist[nx][ny] = dist[x][y] + 1; q.push_back({nx,ny}); } } } int ans =0; for(int i=1;i<=h;i++){ for(int j=1;j<=w;j++){ if(dist[i][j] != inf){ ans= max(ans,dist[i][j]); } } } cout << ans+1 << "\n"; } signed main(){ ios::sync_with_stdio(0); cin.tie(0); int t=1; // cin>>t; while(t--){ solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...