#include <iostream>
#include <vector>
#include <numeric>
#include <algorithm>
std::vector<std::vector<int>> create_map(int N, int M, std::vector<int> A, std::vector<int> B) {
std::vector<std::vector<bool>> adj(N + 1, std::vector<bool>(N + 1, false));
for (int i = 0; i < M; ++i) {
adj[A[i]][B[i]] = true;
adj[B[i]][A[i]] = true;
}
if (M == N * (N - 1) / 2) {
int K = N;
std::vector<std::vector<int>> map(K, std::vector<int>(K));
for (int i = 0; i < K; ++i) {
for (int j = 0; j < K; ++j) {
map[i][j] = (i + j) % N + 1;
}
}
return map;
}
int K = 2 * N;
std::vector<std::vector<int>> map(K, std::vector<int>(K));
for (int i = 1; i <= N; ++i) {
for (int row = 2 * (i - 1); row <= 2 * (i - 1) + 1; ++row) {
for (int col = 2 * (i - 1); col <= 2 * (i - 1) + 1; ++col) {
map[row][col] = i;
}
}
}
for (int i = 0; i < M; ++i) {
int u = A[i];
int v = B[i];
map[2 * (u - 1)][2 * (v - 1)] = u;
map[2 * (u - 1) + 1][2 * (v - 1)] = u;
map[2 * (u - 1)][2 * (v - 1) + 1] = v;
map[2 * (u - 1) + 1][2 * (v - 1) + 1] = v;
map[2 * (v - 1)][2 * (u - 1)] = v;
map[2 * (v - 1) + 1][2 * (u - 1)] = v;
map[2 * (v - 1)][2 * (u - 1) + 1] = u;
map[2 * (v - 1) + 1][2 * (u - 1) + 1] = u;
}
for (int i = 0; i < K; ++i) {
for (int j = 0; j < K; ++j) {
if (map[i][j] == 0) {
map[i][j] = (i / 2) + 1;
}
}
}
return map;
}
# | 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... |