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...