#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |