Submission #1324002

#TimeUsernameProblemLanguageResultExecution timeMemory
1324002sh_qaxxorov_571Tracks in the Snow (BOI13_tracks)C++20
100 / 100
382 ms112176 KiB
#include <iostream> #include <vector> #include <string> #include <deque> #include <algorithm> using namespace std; int dx[] = {0, 0, 1, -1}; int dy[] = {1, -1, 0, 0}; int main() { // Tezkor kiritish va chiqarish ios_base::sync_with_stdio(false); cin.tie(NULL); int H, W; cin >> H >> W; vector<string> meadow(H); for (int i = 0; i < H; i++) { cin >> meadow[i]; } // Masofalarni saqlash uchun massiv (-1 hali ko'rilmagan degani) vector<vector<int>> dist(H, vector<int>(W, -1)); deque<pair<int, int>> dq; // Boshlang'ich nuqtani belgilaymiz dist[0][0] = 1; dq.push_back({0, 0}); int max_depth = 1; while (!dq.empty()) { pair<int, int> curr = dq.front(); dq.pop_front(); int r = curr.first; int c = curr.second; max_depth = max(max_depth, dist[r][c]); for (int i = 0; i < 4; i++) { int nr = r + dx[i]; int nc = c + dy[i]; // Maydon ichida ekanligini va qor emasligini tekshiramiz if (nr >= 0 && nr < H && nc >= 0 && nc < W && meadow[nr][nc] != '.' && dist[nr][nc] == -1) { if (meadow[nr][nc] == meadow[r][c]) { // Bir xil turdagi iz - masofa 0 dist[nr][nc] = dist[r][c]; dq.push_front({nr, nc}); } else { // Har xil turdagi iz - masofa 1 (yangi hayvon) dist[nr][nc] = dist[r][c] + 1; dq.push_back({nr, nc}); } } } } cout << max_depth << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...