#include "worldmap.h"
#include <bits/stdc++.h>
using namespace std;
vector<vector<int>> create_map(int n, int m, vector<int> a, vector<int> b){
    vector<int> visited(n,0);
    vector<int> q = {0};
    int index = 0;
    visited[0] = 1;
    for(int i=0;i<m;i++){
        a[i]--;
        b[i]--;
    }
    vector<vector<int>> adj(n);
    for(int i=0;i<m;i++){
        adj[a[i]].push_back(b[i]);
        adj[b[i]].push_back(a[i]);
    }
    vector<int> parent(n,-1);
    while(index<q.size()){
        int i = q[index];
        for(int j:adj[i]){
            if(visited[j]==0){
                visited[j] = 1;
                parent[j] = i;
                q.push_back(j);
            }
        }
        index++;
    }
    vector<vector<int>> adj1(n);
    for(int i=1;i<n;i++){
        adj1[parent[i]].push_back(i);
    }
    vector<int> s = {0};
    vector<int> visited1(n,0);
    visited1[0] = 1;
    vector<int> order;
    int p[n];
    while(s.size()>0){
        int i = s[s.size()-1];
        if(visited1[i]==2){
            s.pop_back();
            if(i!=0){
                order.push_back(parent[i]);
            }
        }
        if(visited1[i]==1){
            p[i] = order.size();
            order.push_back(i);
            for(int j:adj1[i]){
                s.push_back(j);
                visited1[j] = 1;
            }
            visited1[i] = 2;
        }
    }
    vector<vector<int>> ans;
    for(int i=0;i<3*n;i++){
        vector<int> v(3*n,order[order.size()-1]+1);
        ans.push_back(v);
    }
    int loc[n][2];
    int z = 0;
    int x = 0;
    for(int i=0;i<order.size();i++){
        if(p[order[i]]==i){
            for(int j=0;j<3*n;j++){
                if(j<n){
                    ans[z+x][j] = order[i]+1;
                }
                else{
                    ans[z+1-x][j] = order[i]+1;
                }
            }
            if(x==0){
                for(int j=0;j<n;j++){
                    ans[z+2][j] = order[i]+1;
                    ans[z+1][j] = order[i]+1;
                }
            }
            else{
                for(int j=n;j<3*n;j++){
                    ans[z+2][j] = order[i]+1;
                    ans[z+1][j] = order[i]+1;
                }
            }
            loc[order[i]][0] = z+1;
            if(x==0){
                loc[order[i]][1] = 0;
            }
            else{
                loc[order[i]][1] = n;
            }
            z += 2;
            x = 1-x;
            
        }
        else{
            for(int j=0;j<3*n;j++){
                if(j<n){
                    ans[z+x][j] = order[i]+1;
                }
                else{
                    ans[z+1-x][j] = order[i]+1;
                }
            }
            z += 1;
        }
    }
    vector<int> count(3*n,0);
    for(int i=0;i<m;i++){
        if((a[i]-b[i]+n)%n>n/2){
            swap(a[i],b[i]);
        }
        ans[loc[a[i]][0]][loc[a[i]][1]+2*count[a[i]]] = b[i]+1;
        count[a[i]]++;
    }
    return ans;
}
| # | 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... |