Submission #134027

#TimeUsernameProblemLanguageResultExecution timeMemory
134027ly20Tracks in the Snow (BOI13_tracks)C++17
100 / 100
1740 ms163452 KiB
#include<bits/stdc++.h>
using namespace std;
const int MAXN=4123,INF=1123456789;
int dist[MAXN][MAXN];
int tb[MAXN][MAXN];
int dx[]={0,0,1,-1},dy[]={1,-1,0,0};
int main()
{
    int n,m;
    scanf("%d %d",&n,&m);
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            char c;
            scanf(" %c",&c);
            if(c=='F')
            {
                tb[i][j]=0;
            }
            if(c=='R')
            {
                tb[i][j]=1;
            }
            if(c=='.')
            {
                tb[i][j]=-1;
            }
            dist[i][j]=INF;
        }
    }
    deque<pair<int,int> > fila;
    fila.push_back(make_pair(0,0));
    dist[0][0]=1;
    while(!fila.empty())
    {
        int curx=fila.front().first,cury=fila.front().second;fila.pop_front();
        for(int i=0;i<4;i++)
        {
            int vizx=curx+dx[i],vizy=cury+dy[i];
            if(vizx<0 || vizx>=n || vizy<0 || vizy>=m)continue;
            if(tb[vizx][vizy]==-1)continue;
            if(tb[vizx][vizy]==tb[curx][cury])
            {
                if(dist[curx][cury]<dist[vizx][vizy])
                {
                    dist[vizx][vizy]=dist[curx][cury];
                    fila.push_front(make_pair(vizx,vizy));
                }
            }
            else
            {
                if(dist[curx][cury]<dist[vizx][vizy]-1)
                {
                    dist[vizx][vizy]=dist[curx][cury]+1;
                    fila.push_back(make_pair(vizx,vizy));
                }
            }
        }
    }
    int resp=0;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            if(tb[i][j]!=-1)resp=max(resp,dist[i][j]);
        }
    }
    printf("%d\n",resp);
    return 0;
}

Compilation message (stderr)

tracks.cpp: In function 'int main()':
tracks.cpp:10:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d",&n,&m);
     ~~~~~^~~~~~~~~~~~~~~
tracks.cpp:16:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf(" %c",&c);
             ~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...