Submission #1253389

#TimeUsernameProblemLanguageResultExecution timeMemory
1253389dreamnguyenWorld Map (IOI25_worldmap)C++20
0 / 100
1 ms580 KiB
#include <vector> #include <set> #include <algorithm> #include "worldmap.h" std::vector<std::vector<int>> create_map(int N, int M, std::vector<int> A, std::vector<int> B) { int K = N * 7; // Đảm bảo R = K / N > 6 ⇒ "phá" subtask 6 std::vector<std::vector<int>> grid(K, std::vector<int>(K, 0)); // Tập hợp các cặp liền kề hợp lệ std::set<std::pair<int, int>> neighbor_set; for (int i = 0; i < M; ++i) { neighbor_set.insert({A[i], B[i]}); neighbor_set.insert({B[i], A[i]}); } // Tô từng cặp liền kề vào các vùng không giao nhau int row = 0; for (int i = 0; i < M; ++i) { int a = A[i], b = B[i]; // Vị trí riêng biệt, đảm bảo không chạm các ô khác int col = 0; grid[row][col] = a; grid[row][col + 1] = b; row += 3; // cách dòng để không chạm nhau } // Tô mỗi quốc gia còn thiếu ít nhất 1 lần std::vector<bool> seen(N + 1, false); for (int i = 0; i < K; ++i) for (int j = 0; j < K; ++j) if (grid[i][j] != 0) seen[grid[i][j]] = true; row = K - 1; for (int c = 1; c <= N; ++c) { if (!seen[c]) { grid[row][c] = c; } } // Tô toàn bộ ô còn lại bằng quốc gia 1 for (int i = 0; i < K; ++i) for (int j = 0; j < K; ++j) if (grid[i][j] == 0) grid[i][j] = 1; // Đảm bảo: mỗi ô liền kề có màu khác đều là cặp hợp lệ for (int i = 0; i < K; ++i) { for (int j = 0; j < K; ++j) { if (i + 1 < K && grid[i][j] != grid[i + 1][j]) { if (!neighbor_set.count({grid[i][j], grid[i + 1][j]})) { // Nếu là cặp không hợp lệ ⇒ sửa lại thành cùng màu grid[i + 1][j] = grid[i][j]; } } if (j + 1 < K && grid[i][j] != grid[i][j + 1]) { if (!neighbor_set.count({grid[i][j], grid[i][j + 1]})) { grid[i][j + 1] = grid[i][j]; } } } } return grid; }
#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...