Submission #1282352

#TimeUsernameProblemLanguageResultExecution timeMemory
1282352Faisal_SaqibTracks in the Snow (BOI13_tracks)C++20
0 / 100
742 ms132828 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long

const int N=4000;
char g[N][N];
bool vis[N][N];
int dx[]={0,0,-1,1};
int dy[]={-1,1,0,0};
int dist[N][N];
int main()
{
    ios::sync_with_stdio(0);
    cout.tie(0);
    cin.tie(0);
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            cin>>g[i][j];
        }
    }
    deque<pair<int,int>> q;
    vis[n-1][m-1]=1;
    q.push_back({n-1,m-1});
    int ans=0;
    while(q.size())
    {
        auto it=q.front();
        q.pop_front();
        int x=it.first,y=it.second;
        ans=max(ans,dist[x][y]);
        for(int i=0;i<4;i++)
        {
            int nx=x+dx[i],ny=y+dy[i];
            if(nx>=0 and ny>=0 and nx<n and ny<m and !vis[nx][ny])
            {
                if(g[nx][ny]==g[x][y])
                {
                    // cost zero
                    vis[nx][ny]=1;
                    dist[nx][ny]=dist[x][y];
                    q.push_front({nx,ny});
                }                
                else{
                    vis[nx][ny]=1;
                    dist[nx][ny]=dist[x][y]+1;
                    q.push_back({nx,ny});
                }
            }
        }
    }
    cout<<ans<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...