#include "worldmap.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define pii pair<int,int>
vector<int> ad[41],st;
vector<pii> bs;
int d[41];
bool vs[41];
void dfs(int v){
vs[v]=1;
st.pb(v);
for(int u:ad[v]){
if(vs[u]){
if(d[v]-d[u]>1)bs.pb({u,v});
}else{
d[u]=d[v]+1;
dfs(u);
st.pb(v);
}
}
}
std::vector<std::vector<int>> create_map(int n, int m, std::vector<int> a, std::vector<int> b) {
for(int i=1;i<=n;i++){
ad[i].clear();
vs[i]=0;
}
st.clear();
for(int i=0;i<m;i++){
ad[a[i]].pb(b[i]);
ad[b[i]].pb(a[i]);
}
bs.clear();
dfs(1);
int td=0;
while(d[st.back()]==td++)st.pop_back();
// for(int i:st)cout<<i<<' ';
// cout<<'\n';
// for(auto[x,y]:bs)cout<<x<<' '<<y<<'\n';
bool bb[n+1];
memset(bb,0,sizeof(bb));
vector<int> be[n+1];
while(1){
int c[n+1];
memset(c,0,sizeof(c));
for(auto[x,y]:bs){
if(!bb[x]&&!bb[y]){
c[x]++;
c[y]++;
}
}
int id=max_element(c+1,c+n+1)-c;
if(!c[id])break;
for(auto[x,y]:bs){
if(!bb[x]&&!bb[y]){
if(x==id)be[id].pb(y);
if(y==id)be[id].pb(x);
}
}
bb[id]=1;
// cout<<id<<' '<<c[id]<<'\n';
}
vector<int> t;
int id[n+1],rm[n+1];
memset(id,-1,sizeof(id));
memset(rm,0,sizeof(rm));
for(int i:st){
t.pb(i);
if(id[i]==-1&&bb[i]){
id[i]=t.size();
t.pb(i);
t.pb(i);
}
}
st=t;
int sz=st.size();
vector<vector<int>> ans(sz,vector<int>(sz));
for(int i=0;i<sz;i++){
for(int j=0;j<sz;j++)ans[i][j]=st[j];
}
for(int i=1;i<=n;i++){
for(int j:be[i]){
ans[rm[i]][id[i]]=j;
rm[i]+=2;
}
}
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... |