#include <bits/stdc++.h>
using namespace std;
int K = 15;
vector<vector<int>> create_map(int N, int M, vector<int> A, vector<int> B) {
vector<vector<int>> grid(K, vector<int>(K, 0));
vector<pair<int, int>> pos(N + 1, {-1, -1}); // vị trí mỗi quốc gia
int x = 0, y = 0;
// Bước 1: Gán mỗi quốc gia vào lưới (khác nhau)
for (int i = 1; i <= N; i++) {
grid[x][y] = i;
pos[i] = {x, y};
y++;
if (y == K) {
y = 0;
x++;
}
}
// Bước 2: Đặt các cặp liền kề
for (int i = 0; i < M; i++) {
int u = A[i], v = B[i];
bool ok = false;
// Duyệt lưới để tìm ô của u và ô trống bên cạnh để đặt v
for (int r = 0; r < K && !ok; r++) {
for (int c = 0; c < K && !ok; c++) {
if (grid[r][c] != u) continue;
// 4 hướng
int dr[] = {-1, 1, 0, 0};
int dc[] = {0, 0, -1, 1};
for (int d = 0; d < 4; d++) {
int nr = r + dr[d];
int nc = c + dc[d];
if (nr >= 0 && nr < K && nc >= 0 && nc < K) {
if (grid[nr][nc] == 0) {
grid[nr][nc] = v;
ok = true;
break;
}
if (grid[nr][nc] == v) {
ok = true;
break;
}
}
}
}
}
// Nếu không tìm được vị trí cạnh nhau, đặt v vào đâu đó rồi nối sau
if (!ok) {
for (int r = 0; r < K && !ok; r++) {
for (int c = 0; c < K && !ok; c++) {
if (grid[r][c] == 0) {
grid[r][c] = v;
ok = true;
}
}
}
}
}
return grid;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |