Submission #63731

#TimeUsernameProblemLanguageResultExecution timeMemory
63731Bodo171Tracks in the Snow (BOI13_tracks)C++14
46.77 / 100
2086 ms146708 KiB
#include <iostream> #include <fstream> #include <queue> using namespace std; const int nmax=4005; int d[nmax][nmax]; //pair<int,int> q[2][nmax*nmax]; string s[nmax]; int p[2],u[2]; bool E[nmax][nmax]; int use,mx,i,j,dd,n,m,li,ci,lf,cf,di; int d1[]={-1,0,1,0}; int d2[]={0,-1,0,1}; void dij(int L,int C) { deque< pair<int,int> > q; q.push_back({L,C}); for(i=1;i<=n;i++) for(j=1;j<=m;j++) d[i][j]=n*m+1; d[L][C]=0; while(!q.empty()) { li=q.front().first;ci=q.front().second;q.pop_front(); for(di=0;di<4;di++) { lf=li+d1[di];cf=ci+d2[di]; if(lf>=1&&cf>=1&&lf<=n&&cf<=m&&(s[lf][cf-1]=='R'||s[lf][cf-1]=='F')) { dd=d[li][ci]+(s[li][ci-1]!=s[lf][cf-1]); if(dd<d[lf][cf]) { d[lf][cf]=dd; if(dd=d[li][ci]) q.push_front({lf,cf}); else q.push_back({lf,cf}); } } } } } int main() { // freopen("data.in","r",stdin); ios_base::sync_with_stdio(false); cin>>n>>m;getline(cin,s[0]); for(i=1;i<=n;i++) { getline(cin,s[i]); } dij(1,1); for(i=1;i<=n;i++) for(j=1;j<=m;j++) if(s[i][j-1]=='R'||s[i][j-1]=='F') mx=max(mx,d[i][j]); cout<<mx+1; return 0; }

Compilation message (stderr)

tracks.cpp: In function 'void dij(int, int)':
tracks.cpp:35:32: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
                           if(dd=d[li][ci]) q.push_front({lf,cf});
                              ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...