Submission #401795

#TimeUsernameProblemLanguageResultExecution timeMemory
401795jli12345Tracks in the Snow (BOI13_tracks)C++11
82.50 / 100
2109 ms164076 KiB
#include <bits/stdc++.h>
using namespace std;

typedef pair<int, int> pii;
#define f first
#define s second


int N, M;
char arr[4100][4100];

int depth[4100][4100];

struct comp{
	bool operator()(const pair<pii, int> &a, const pair<pii, int> &b){
		return a.s > b.s;
	}
};

int xd[4] = {1, -1, 0, 0};
int yd[4] = {0, 0, 1, -1};

int main(){
	cin >> N >> M;
	for (int i = 1; i <= N; i++){
		for (int j = 1; j <= M; j++){
			cin >> arr[i][j];
		}
	}
	priority_queue<pair<pii, int>, vector<pair<pii, int> >, comp> pq;
	pq.push({{1, 1}, 1});
	depth[1][1] = 1;
	while (!pq.empty()){
		int x = pq.top().f.f;
		int y = pq.top().f.s;
		int w = pq.top().s;
		pq.pop();
		//if (depth[x][y] >= w) continue;
		for (int i = 0; i < 4; i++){
			int nx = x+xd[i];
			int ny = y+yd[i];
			if (nx >= 1 && nx <= N && ny >= 1 && ny <= M && arr[nx][ny] != '.' && !depth[nx][ny]){
				if (arr[x][y] == arr[nx][ny])
					depth[nx][ny] = depth[x][y];
				else
					depth[nx][ny] = depth[x][y]+1;
				pq.push({{nx, ny}, depth[nx][ny]});
			}
		}
	}
	int ans = 0;
	for (int i = 1; i <= N; i++){
		for (int j = 1; j <= M; j++){
			ans = max(ans, depth[i][j]);
		}
	}
	cout << ans << "\n";
}

Compilation message (stderr)

tracks.cpp: In function 'int main()':
tracks.cpp:36:7: warning: unused variable 'w' [-Wunused-variable]
   36 |   int w = pq.top().s;
      |       ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...