제출 #1300668

#제출 시각아이디문제언어결과실행 시간메모리
1300668settopTracks in the Snow (BOI13_tracks)C++20
100 / 100
651 ms102056 KiB
#include<bits/stdc++.h> using namespace std; #define fall(i,a,n) for(int i=a;i<=n;i++) #define rfall(i,a,n) for(int i=a;i>=n;i--) #define pb push_back #define all(x) x.begin(),x.end() #define sz(x) (int)x.size() const int MAXN=4e3+10; const int MAXL=22; typedef tuple<int,int,int> trio; typedef pair<int,int> pii; int n,m; char arr[MAXN][MAXN]; bool z[MAXN][MAXN]; int32_t main(){ std::ios_base::sync_with_stdio(false); cin.tie(NULL); //freopen("disrupt.in","r",stdin); //freopen("disrupt.out","w",stdout); cin>>n>>m; fall(i,1,n) fall(j,1,m) cin>>arr[i][j]; deque<trio> fila; fila.pb({1,1,1}); z[1][1]=1; int ans=0; while(!fila.empty()){ auto [d,a,b]=fila.front(); fila.pop_front(); ans=d; fall(x,-1,1) fall(y,-1,1){ if(abs(x)+abs(y)!=1) continue; int nx=x+a,ny=y+b; if(arr[nx][ny]!='R' && arr[nx][ny]!='F') continue; if(z[nx][ny]) continue; if(arr[nx][ny]==arr[a][b]){ z[nx][ny]=1; fila.push_front({d,nx,ny}); } else{ z[nx][ny]=1; fila.pb({d+1,nx,ny}); } } } cout<<ans<<"\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...