#include "worldmap.h"
#include <bits/stdc++.h>
using namespace std;
std::vector<std::vector<int>> create_map(int N, int M, std::vector<int> A, std::vector<int> B) {
	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<vector<int>> ans(2*N,vector<int>(2*N,1));
	vector<int> diag(N);
	vector<int> cur(N);
	vector<bool> vis(N);
	auto filldiag = [N,&ans](int diag, int x) {
		for(int i=0;i<2*N;i++)
			if(diag-i>=0&&diag-i<2*N)
				ans[i][diag-i]=x;
	};
	auto dfs = [&adj,&vis,&diag,&filldiag,N,cnt=0](auto &dfs, int x) mutable -> void {
		vis[x] = 1;
		filldiag(cnt, x+1);
		filldiag(cnt+1, x+1);
		filldiag(cnt+2, x+1);
		diag[x] = cnt + 1;
		cnt += 3;
		for(auto i: adj[x])
			if(!vis[i]) {
				dfs(dfs, i);
				filldiag(cnt++, x+1);
			}
	};
	dfs(dfs, 0);
	for(int i=0;i<N;i++)
		cur[i] = max(0, diag[i] - (2 * N - 1));
	for(int i=0;i<M;i++) {
		if(abs(2 * N - 1 - diag[A[i]]) > abs(2 * N - 1 - diag[B[i]]))
			swap(A[i], B[i]);
		ans[cur[A[i]]][diag[A[i]]-cur[A[i]]] = B[i] + 1;
		cur[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... |