제출 #1273983

#제출 시각아이디문제언어결과실행 시간메모리
1273983hasanfaqatTracks in the Snow (BOI13_tracks)C++20
24.27 / 100
305 ms98512 KiB
#include<bits/stdc++.h> using namespace std; int H, W; string snow[4005]; bool inside(int y, int x){ if( y < H && y >= 0 && x < W && x >= 0 && snow[y][x] != '.' ){ return true; }else return false; } int main(){ int mx[4] = {-1, 1, 0, 0}; int my[4] = {0, 0, 1, -1}; cin>>H>>W; int dist[H][W], ans = 1; for(int i = 0; i< H; i++) for(int j = 0; j < W; j++) dist[i][j] = 0; for(int i = 0; i < H; i++) cin>>snow[i]; deque<pair<int,int>> curr; // kalo samaen depan, beda belakang dist[0][0] = 1; curr.push_front({0,0}); while(!curr.empty()){ auto [curry, currx] = curr.front(); curr.pop_front(); ans = max(dist[curry][currx], ans); for(int i = 0; i < 4; i++){ int x = currx + mx[i], y = curry + my[i]; if(dist[y][x] == 0 && inside(y,x)){ if(snow[y][x] != snow[curry][currx]){ curr.push_back({y,x}); dist[y][x] = dist[curry][currx] + 1; }else{ curr.push_front({y,x}); dist[y][x] = dist[curry][currx]; } } } } cout<<ans<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...