Submission #101427

#TimeUsernameProblemLanguageResultExecution timeMemory
101427dwscTracks in the Snow (BOI13_tracks)C++14
100 / 100
1213 ms134948 KiB
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> ii;
typedef pair<int,ii> i3;
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int h,w;
    cin >> h >> w;
    char grid[h][w];
    int visit[h][w];
    for (int i = 0; i < h; i++){
        for (int j = 0; j < w; j++) {
            cin >> grid[i][j];
            visit[i][j] = 0;
        }
    }
    deque<i3> dq;
    int dx[] = {1,0,-1,0},dy[] = {0,1,0,-1};
    int ans = 1;
    visit[0][0] = 1;
    dq.push_front(i3(1,ii(0,0)));
    while (!dq.empty()){
        i3 f = dq.front();
        dq.pop_front();
        int num = f.first,x = f.second.first,y = f.second.second;
        for (int i = 0; i < 4; i++){
            int nx = x+dx[i],ny = y+dy[i];
            if (nx < 0 || nx >= h || ny < 0 || ny >= w) continue;
            if (grid[nx][ny] == '.') continue;
            if (visit[nx][ny]) continue;
            visit[nx][ny] = 1;
            int nnum = num;
            if (grid[x][y] != grid[nx][ny]) {
                nnum++;
                dq.push_back(i3(nnum,ii(nx,ny)));
            }
            else dq.push_front(i3(nnum,ii(nx,ny)));
            ans = max(ans,nnum);
        }
    }
    cout << ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...