#include <bits/stdc++.h>
#include "worldmap.h"
using namespace std;
vector <int> VV;
void dfs(vector<vector<int>>& v,int mx,int node,vector<int>& visited){
    VV.push_back(node);
    int tt=0;
    for (int i=0; i<v[node].size(); i++){
        if (visited[v[node][i]]==0){
            tt++;
            visited[v[node][i]]=1;
            dfs(v,mx,v[node][i],visited);
            VV.push_back(node);
        }
    }
}
std::vector<std::vector<int>> create_map(int N, int M, std::vector<int> A, std::vector<int> B) {
    VV.clear(); 
    
    vector<vector<int>> v(N+1);
    vector<vector<int>> vt(N+1, vector<int>(N+1, 0));
    
    
    for (int i=0; i<M; i++){
        v[A[i]].push_back(B[i]);
        vt[A[i]][B[i]]=1;
        v[B[i]].push_back(A[i]);        
        vt[B[i]][A[i]]=1;
    }
    
    if (N==1){
        return vector<vector<int>>{{1}};
    }
    
    vector<int> visited(N+1,0);       
    
    visited[1]=1;
    
    dfs(v,N,1,visited);
    
    int ln=VV.size();
    
    ln=2*N+VV.size();
    
    vector <vector <int>> ans(ln, vector<int>(ln, 0));
    
    vector <int> vvv(N+1,0);
    
    int k=0;
    
    for (int i=0; i<VV.size(); i++){
        
        if (vvv[VV[i]]==1){
         
            for (int j=0; j<ln; j++){
                ans[k][j]=VV[i];
            } 
            
            k++;
        }
        
        else{
            vvv[VV[i]]=1;
        
            for (int j=0; j<ln; j++){
                ans[k][j]=VV[i];
            }         
            
            for (int j=0; j<ln; j++){
                if (j%2==1 && j<2*N){
                    if (vt[VV[i]][j/2+1]==1){
                        ans[k+1][j]=j/2+1;
                    }
                    else{
                        ans[k+1][j]=VV[i];
                    }
                }
                else{
                    ans[k+1][j]=VV[i];
                }
            }
            
            
            for (int j=0; j<ln; j++){
                ans[k+2][j]=VV[i];
            }             
            k=k+3;
        }
    }
    return (ans);
}
/*
int main() {
    int N = 6; // number of nodes
    int M = N - 1;
    // Build the path: A[i] = i+1, B[i] = i+2
    vector<int> A(M), B(M);
    for (int i = 0; i < M; i++) {
        A[i] = i + 1;
        B[i] = i + 2;
    }
    try {
        auto ans = create_map(N, M, A, B);
        cout << "create_map ran successfully!\n";
        cout << "Resulting 2D map (ans):\n";
        for (auto &row : ans) {
            for (int x : row) cout << x << " ";
            cout << "\n";
        }
    } catch (const exception &e) {
        cerr << "Exception: " << e.what() << "\n";
    } catch (...) {
        cerr << "Unknown exception occurred!\n";
    }
    return 0;
}*/
| # | 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... |