Submission #1274257

#TimeUsernameProblemLanguageResultExecution timeMemory
1274257ahmet_efendiTracks in the Snow (BOI13_tracks)C++20
100 / 100
880 ms239160 KiB
//
// Created by Ahmet Efendioğlu on 29.09.2025.
//
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int dx[4]={-1,0,0,1};
const int dy[4]={0,1,-1,0};
int h,w;
vector<string>grid;
int inside(int a,int b) {
    if (a>=0 && a<h && b>=0 && b<w && grid[a][b]!='.') {
        return 1;
    }
    return 0;
}
int32_t main() {
    cin>>h>>w;
    grid.resize(h);
    int visited[h][w];
    for (int i=0;i<h;i++) {
        for (int j=0;j<w;j++) {
            visited[i][j]=0;
        }
    }
    for (int i=0;i<h;i++) {
            cin>>grid[i];
    }
    int res=0;
    deque<pair<int,int>>q;
    visited[0][0]=1;
    q.push_front({0,0});
    while (!q.empty()) {
        auto u=q.front();
        q.pop_front();
        res=max(res,visited[u.first][u.second]);
        for (int i=0;i<=3;i++) {
            int a=dx[i]+u.first;
            int b=dy[i]+u.second;
            if (inside(a,b) && visited[a][b]==0) {
                if (grid[u.first][u.second] == grid[a][b]) {
                    visited[a][b]=visited[u.first][u.second];
                     q.push_front({a,b});
                }
               else {
                   visited[a][b]=visited[u.first][u.second]+1;
                   q.push_back({a,b});
               }
            }
        }
    }
    cout<<res<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...