Submission #812533

#TimeUsernameProblemLanguageResultExecution timeMemory
812533andecaandeciTracks in the Snow (BOI13_tracks)C++17
100 / 100
1441 ms888112 KiB
#include <bits/stdc++.h> #define int long long #define SETIO cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(false); #define REP(i,a,b)for(int i=a;i<b;i++) #define fi first #define se second #define pb push_back #define FORI(v)for(auto i:v) #define FORJ(v)for(auto j:v) using namespace std; using pii=pair<int, int>; int color[5000][5000]; bool visited[5000][5000]; int w, h; int bfs(){ deque<pair<pii, int>> q; q.pb({{0,0},1}); int ans=1; while(q.size()){ auto qt = q.front();q.pop_front(); auto top = qt.fi; if(top.fi<0)continue; if(top.fi>=h)continue; if(top.se<0)continue; if(top.se>=w)continue; if(visited[top.fi][top.se])continue; visited[top.fi][top.se]=true; int cur=color[top.fi][top.se]; if(cur==0)continue; #define PUSH(x, y) if(cur!=color[x][y])q.pb({{x,y},qt.se+1});else q.push_front({{x,y},qt.se}); PUSH(top.fi+1,top.se); PUSH(top.fi-1,top.se); PUSH(top.fi,top.se+1); PUSH(top.fi,top.se-1); ans=max(ans,qt.se); } return ans; } #undef int int main() { #define int long long SETIO; cin>>h>>w; REP(i,0,h){ REP(j,0,w){ char c;cin>>c; if(c=='.')color[i][j]=0; if(c=='R')color[i][j]=1; if(c=='F')color[i][j]=2; } } memset(visited,0,sizeof visited); cout<<bfs()<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...