#include "worldmap.h"
#include <vector>
#include <algorithm>
using namespace std;
vector<vector<int>> create_map(int N, int M, vector<int> A, vector<int> B) {
    // 1. Xây dựng đồ thị liền kề
    vector<vector<int>> adj(N+1);
    for (int i = 0; i < M; i++) {
        adj[A[i]].push_back(B[i]);
        adj[B[i]].push_back(A[i]);
    }
    // 2. DFS để xác định parent và depth của mỗi node
    vector<int> parent(N+1, 0);
    vector<int> depth(N+1, 0);
    vector<bool> visited(N+1, false);
    
    function<void(int)> dfs = [&](int u) {
        visited[u] = true;
        for (int v : adj[u]) {
            if (!visited[v]) {
                parent[v] = u;
                depth[v] = depth[u] + 1;
                dfs(v);
            }
        }
    };
    
    dfs(1); // Bắt đầu DFS từ quốc gia 1
    // 3. Tạo bản đồ với K = N
    int K = N;
    vector<vector<int>> map(K, vector<int>(K, 1)); // Khởi tạo toàn bộ là 1
    // 4. Điền màu theo thứ tự DFS
    // - Mỗi hàng i đại diện cho quốc gia i+1
    // - Đảm bảo parent và child liền kề nhau
    for (int i = 0; i < K; i++) {
        int country = i + 1;
        map[i][0] = country; // Cột đầu tiên là quốc gia tương ứng
        
        // Đặt parent của quốc gia này liền kề
        if (parent[country] != 0) {
            int p = parent[country];
            map[i][1] = p; // Ô bên phải là parent
        }
    }
    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... |