Submission #101426

#TimeUsernameProblemLanguageResultExecution timeMemory
101426dwscTracks in the Snow (BOI13_tracks)C++14
82.50 / 100
2060 ms91336 KiB
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> ii;
typedef pair<int,ii> i3;
int main(){
    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;
        }
    }
    priority_queue<i3,vector<i3>,greater<i3> > pq;
    int dx[] = {1,0,-1,0},dy[] = {0,1,0,-1};
    int ans = 1;
    visit[0][0] = 1;
    pq.push(i3(1,ii(0,0)));
    while (!pq.empty()){
        i3 f = pq.top();
        pq.pop();
        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++;
            ans = max(ans,nnum);
            //cout << nx << " " << ny << " " << nnum << "\n";
            pq.push(i3(nnum,ii(nx,ny)));
        }
    }
    cout << ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...