# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1280663 | algorider | World Map (IOI25_worldmap) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
vector<vector<int>> create_map(int N, int M, vector<int> A, vector<int> B) {
// Step 1: Construct adjacency matrix
vector<vector<int>> adj(N + 1, vector<int>(N + 1, 0));
for (int i = 0; i < M; ++i) {
adj[A[i]][B[i]] = adj[B[i]][A[i]] = 1;
}
// Step 2: Set grid size K (safe and small)
int K = min(2 * N, 240);
vector<vector<int>> C(K, vector<int>(K, 1));
// Step 3: Initial coloring pattern
for (int i = 0; i < K; ++i) {
for (int j = 0; j < K; ++j) {
C[i][j] = (i + j) % N + 1;
}
}
// Step 4: Ensure all adjacencies (optional fix)
// We can tweak small zones to enforce each adjacency pair explicitly
int row = 0;
for (int i = 0; i < M; ++i) {
if (row + 1 < K) {
C[row][0] = A[i];
C[row + 1][0] = B[i];
row += 2;
}
}
// Step 5: Return the grid
return C;
}
// --- For Local Testing / Sample Grader ---
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T; cin >> T;
while (T--) {
int N, M; cin >> N >> M;
vector<int> A(M), B(M);
for (int i = 0; i < M; ++i) cin >> A[i] >> B[i];
auto C = create_map(N, M, A, B);
int P = C.size();
cout << P << "\n";
for (int i = 0; i < P; ++i) cout << P << " ";
cout << "\n";
for (int i = 0; i < P; ++i) {
for (int j = 0; j < P; ++j) cout << C[i][j] << " ";
cout << "\n";
}
}
return 0;
}