Submission #1216262

#TimeUsernameProblemLanguageResultExecution timeMemory
1216262trimkusMaze (JOI23_ho_t3)C++20
8 / 100
60 ms13484 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;




int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	int r, c, N;
	cin >> r >> c >> N;
	int sti, stj, eni, enj;
	cin >> sti >> stj >> eni >> enj;
	sti -= 1;
	stj -= 1;
	eni -= 1;
	enj -= 1;
	vector<vector<char>> a(r, vector<char>(c));
	for (int i =0 ; i < r; ++i) {
		for (int j =0 ; j < c; ++j) {
			cin >> a[i][j];
		}
	}
	vector<vector<int>> dist(r, vector<int>(c, r * c + 1));
	dist[sti][stj] = 0;
	deque<array<int, 2>> dq;
	dq.push_front({sti, stj});
	vector<int> dx = {0, 1, -1, 0}, dy = {1, 0, 0, -1};
	while (dq.size()) {
		int i = dq.front()[0];
		int j = dq.front()[1];
		dq.pop_front();
		for (int k = 0; k < 4; ++k) {
			int ni = i + dx[k];
			int nj = j + dy[k];
			if (ni < 0 || nj < 0 || ni >= r || nj >= c) continue;
			int add = (a[ni][nj] == '#');
			if (dist[ni][nj] > dist[i][j] + add) {
				dist[ni][nj] = dist[i][j] + add;
				if (add) dq.push_back({ni, nj});
				else dq.push_front({ni, nj});
			}
		}
	}
	for (int i = 0; i < r; ++i) {
		for (int j = 0; j < c; ++j) {
			//~ cout << dist[i][j] << " ";
		}
		//~ cout << "\n";
	}
	cout << dist[eni][enj] << "\n";
	
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...