Submission #949948

#TimeUsernameProblemLanguageResultExecution timeMemory
949948chromaticTracks in the Snow (BOI13_tracks)C++17
0 / 100
2073 ms1048576 KiB
#include <iostream> #include <queue> #include <vector> #include <algorithm> #include <set> using namespace std; const int MAX_H=4000,MAX_W=4000; bool visited[MAX_H][MAX_W]; char grid[MAX_H][MAX_W]; int dist[MAX_H][MAX_W]; //L,R,U,D vector<int> dx={0,0,-1,1}; vector<int> dy={-1,1,0,0}; int main() { int h,w; cin >> h >> w; for(int i=0; i<h; i++) { for(int j=0; j<w; j++) { cin >> grid[i][j]; } } deque<pair<int,int>> q; q.push_back(make_pair(0,0)); while(!q.empty()) { pair<int,int> v=q.front(); q.pop_front(); for(int i=0; i<4; i++) { pair<int,int> u={v.first+dx[i],v.second+dy[i]}; if(u.first<0 || u.first>=h || u.second<0 || u.second>=w || visited[u.first][u.second] || grid[u.first][u.second]=='.') continue; if(grid[v.first][v.second]==grid[u.first][u.second]) { dist[u.first][u.second]=dist[v.first][v.second]; q.push_front(make_pair(u.first,u.second)); } else { dist[u.first][u.second]=dist[v.first][v.second]+1; q.push_back(make_pair(u.first,u.second)); } } } int ans=0; for(int i=0; i<h; i++) { for(int j=0; j<w; j++) { if(visited[i][j]) ans=max(ans,dist[i][j]); } } cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...