#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<vector<int>> g(N),child(N);
  for(int i=0;i<M;i++) A[i]--,B[i]--,g[A[i]].push_back(B[i]),g[B[i]].push_back(A[i]);
  
  int T=0,X=0;
  vector<int> f(N),d(N),par(N);
  function<void(int)> dfs = [&](int u){
    f[u]=++T;
    if(d[u]>d[X]) X=u;
    for(int v:g[u]) if(!f[v]){
      par[v]=u,d[v]=d[u]+1,dfs(v);
      child[u].push_back(v);
    }
  };
  dfs(0);
  vector<bool> path(N),vis(N);
  while(X) path[X]=true,X=par[X];
  int S=2*N;
  vector<vector<int>> ans(S,vector<int>(S,0));
  int k=0,lst=-1;
  auto add = [&](int x){
    for(int i=max(0,k-S+1);i<min(k+1,S);i++) ans[i][k-i]=x+1;
    k++;lst=x;
  };
  function<void(int)> build = [&](int u){
    add(u);add(u);k--;
    int i=max(0,k-S+1);
    for(int v:g[u]) if(f[v]<f[u] && v!=par[u]){
      ans[i][k-i]=v+1,i++;
    }
    k++;
    add(u);
    int nxt=0;
    for(int v:child[u]){
      if(path[v]) nxt=v;
      else{
        build(v);
        add(u);
      }
    }
    if(nxt){
      build(nxt);
      add(u);
    }
  };
  build(0);
  while(k<2*S) add(lst);
  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... |