제출 #1336455

#제출 시각아이디문제언어결과실행 시간메모리
1336455pepperTracks in the Snow (BOI13_tracks)C++17
100 / 100
632 ms120592 KiB
#include <bits/stdc++.h>
using namespace std;
#define pii pair<int,int>

vector<vector<char>> v;
int dx[] = {0,-1,1,0},dy[] = {-1,0,0,1};int n,m;
deque<pii> dq;
vector<vector<int>> g;

bool chc(int x,int y){
    if(x>=0&&x<n&&y>=0&&y<m&&v[x][y] != '.')return 1;
    return 0;
}

int main(){
    ios_base::sync_with_stdio(false);cin.tie(NULL);    
    cin>>n>>m;
    v.resize(n+1,vector<char>(m+1));
    for(int i=0;i<n;i++)for(int j=0;j<m;j++)cin>>v[i][j];
    
    dq.push_front({0,0});
    int ans = 0;
    g.resize(n,vector<int>(m,0));
    g[0][0] = 1;
    while(!dq.empty()){
        pii e =dq.front();dq.pop_front();
        ans = max(ans,g[e.first][e.second]);
        for(int i=0;i<4;i++){
            int cr = e.first + dx[i];
            int cc = e.second + dy[i];
            if(chc(cr,cc)&&g[cr][cc] == 0){
                if(v[cr][cc]==v[e.first][e.second]){
                g[cr][cc] = g[e.first][e.second];
                dq.push_front({cr,cc});
                }
                else{
                    g[cr][cc] = g[e.first][e.second]+1;
                    dq.push_back({cr,cc});
                }
            }
        }
    }
    cout << ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...