#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;
int loc[n];
int z = 0;
for(int i=0;i<order.size();i++){
vector<int> v(4*n-1,order[i]+1);
if(p[order[i]]==i){
loc[order[i]] = z+1;
z += 3;
ans.push_back(v);
ans.push_back(v);
ans.push_back(v);
}
else{
z += 1;
ans.push_back(v);
}
}
vector<int> count(3*n,0);
for(int i=0;i<m;i++){
ans[loc[a[i]]][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... |