Submission #63726

#TimeUsernameProblemLanguageResultExecution timeMemory
63726Bodo171Tracks in the Snow (BOI13_tracks)C++14
84.69 / 100
2081 ms119436 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) { queue< pair<int,int> > q[2]; q[0].push({L,C}); for(i=1;i<=n;i++) for(j=1;j<=m;j++) d[i][j]=n*m+1; d[L][C]=0; for(i=0;i<=n*m;i++) { if(q[use].empty()) return; mx=max(mx,i); while(!q[use].empty()) { li=q[use].front().first;ci=q[use].front().second;q[use].pop(); if(!E[li][ci]) 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; q[(dd&1)].push({lf,cf}); } } } E[li][ci]=1; } p[use]=1;u[use]=0; use=1-use; } } int main() { // freopen("data.in","r",stdin); cin>>n>>m;getline(cin,s[0]); for(i=1;i<=n;i++) { getline(cin,s[i]); } dij(1,1); cout<<mx+1; return 0; }

Compilation message (stderr)

tracks.cpp: In function 'void dij(int, int)':
tracks.cpp:31:14: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
              if(!E[li][ci])
              ^~
tracks.cpp:45:15: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
               E[li][ci]=1;
               ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...