제출 #1185150

#제출 시각아이디문제언어결과실행 시간메모리
1185150Godgift42Tracks in the Snow (BOI13_tracks)C++20
100 / 100
625 ms146812 KiB
#include <bits/stdc++.h> using namespace std; int main(){ int h,w; cin >> h >> w; vector<vector<int>> gr(h,vector<int>(w)); for(int i=0;i<h;i++){ string s; cin >> s; for(int j=0;j<w;j++){ if(s[j]=='R')gr[i][j]=1; else if(s[j]=='F')gr[i][j]=-1; } } deque<pair<int,int>> dq; vector<vector<int>> dist(h,vector<int>(w)); dist[0][0]=1; dq.push_front({0,0}); int ans=1; while(!dq.empty()){ auto [i,j]=dq.front(); dq.pop_front(); ans=max(ans,dist[i][j]); if(i>0 and dist[i-1][j]==0){ if(gr[i-1][j]==gr[i][j]){ dq.push_front({i-1,j}); dist[i-1][j]=dist[i][j]; } else if(gr[i-1][j]*(-1)==gr[i][j]){ dq.push_back({i-1,j}); dist[i-1][j]=dist[i][j]+1; } } if(i<h-1 and dist[i+1][j]==0){ if(gr[i+1][j]==gr[i][j]){ dq.push_front({i+1,j}); dist[i+1][j]=dist[i][j]; } else if(gr[i+1][j]*(-1)==gr[i][j]){ dq.push_back({i+1,j}); dist[i+1][j]=dist[i][j]+1; } } if(j>0 and dist[i][j-1]==0){ if(gr[i][j]==gr[i][j-1]){ dq.push_front({i,j-1}); dist[i][j-1]=dist[i][j]; } else if(gr[i][j-1]*(-1)==gr[i][j]){ dq.push_back({i,j-1}); dist[i][j-1]=dist[i][j]+1; } } if(j<w-1 and dist[i][j+1]==0){ if(gr[i][j]==gr[i][j+1]){ dq.push_front({i,j+1}); dist[i][j+1]=dist[i][j]; } else if(gr[i][j+1]*(-1)==gr[i][j]){ dq.push_back({i,j+1}); dist[i][j+1]=dist[i][j]+1; } } } cout << ans << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...