Submission #1232049

#TimeUsernameProblemLanguageResultExecution timeMemory
1232049almaharbas4Tracks in the Snow (BOI13_tracks)C++20
100 / 100
810 ms110616 KiB
#include<bits/stdc++.h>
#define x first
#define y second
#define pii pair<int,int>
using namespace std;
int main()
{
    int n,m;
    cin>>n>>m;
    vector<vector<char>> v(n,vector<char>(m));
    for(auto &i:v)
    {
        for(auto &j:i) cin>>j;
    }
    vector<pair<int,int>> d={{1,0},{-1,0},{0,1},{0,-1}};
    auto check=[&](int i,int j){
        return (i>=0&&i<n&&j>=0&&j<m&&v[i][j]!='.');
    };
    deque<pii> q;
    q.push_front({0,0});
    vector<vector<int>> depth(n,vector<int>(m));
    depth[0][0]=1;
    int ans=0;
    while(!q.empty())
    {
        pii i=q.front();
        q.pop_front();
        ans=max(ans,depth[i.x][i.y]);
        for(auto [a,b]:d)
        {
            pii j={i.x+a,i.y+b};
            if(check(j.x,j.y)&&!depth[j.x][j.y])
            {
                if(v[i.x][i.y]==v[j.x][j.y]) 
                {
                    depth[j.x][j.y]=depth[i.x][i.y];
                    q.push_front(j);
                }
                else 
                {
                    depth[j.x][j.y]=depth[i.x][i.y]+1;
                    q.push_back(j);
                }
            }
        }
    }
    cout<<ans<<'\n';
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...