Submission #1273986

#TimeUsernameProblemLanguageResultExecution timeMemory
1273986hasanfaqatTracks in the Snow (BOI13_tracks)C++20
2.19 / 100
729 ms112072 KiB
#include<bits/stdc++.h>
using namespace std;
int H, W; 
vector<string> snow;

bool inside(int y, int x){
    return (y >= 0 && y < H && x >= 0 && x < W && snow[y][x] != '.');
}

int main(){
    int mx[4] = {-1, 1, 0, 0};
    int my[4] = {0, 0, 1, -1};
    cin>>H>>W;
    snow.resize(H);
    for(int i = 0; i < H; i++) cin>>snow[i];

    vector<vector<int>> dist(H, vector<int>(W, 0));
    int ans = 1;
    deque<pair<int,int>> curr;
    dist[0][0] = 1;
    curr.push_front({0,0});
    while(!curr.empty()){
        auto [curry, currx] = curr.front(); curr.pop_front();

        for(int i = 0; i < 4; i++){
            int x = currx + mx[i], y = curry + my[i];
            if(!inside(y,x)) continue; 
            if(dist[y][x] == 0){
                if(snow[y][x] != snow[curry][currx]){
                    curr.push_back({y,x});
                    dist[y][x] = dist[curry][currx] + 1;
                }else{
                    curr.push_front({y,x});
                    dist[y][x] = dist[curry][currx];
                }
            }
        }
    }
    cout<<dist[H-1][W-1]<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...