제출 #1335048

#제출 시각아이디문제언어결과실행 시간메모리
1335048dssfsuper2세계 지도 (IOI25_worldmap)C++20
58 / 100
72 ms10500 KiB
#include <bits/stdc++.h>
using namespace std;
vector<bool> done, visited;
int cl=0;
int sz;
vector<vector<int>> ans, adj;
void slf(int x){
  for(int i = 0;i<sz;i++){
    ans[cl][i]=x;
  }
}
void sfad(int x){
  slf(x);
  for(int i = 0;i<adj[x].size();i++){
    ans[cl][2*i]=adj[x][i];
  }
}
void dfs(int n){
  visited[n]=true;
  if(cl!=0){
    slf(n);
    cl++;
  }
  if(!done[n]){
    sfad(n);cl++;
    done[n]=true;
    slf(n);cl++;
  }
  int i = 0;
  for(auto thing:adj[n]){
    if(!visited[thing]){
      i++;
      if(i!=1){
        slf(n);cl++;
      }
      visited[thing]=true;
      dfs(thing);
      slf(n);cl++;
    }
  }
}
vector<vector<int>> create_map(int N, int M, vector<int> A, vector<int> B) {
  sz=5*N;
  cl=0;
  adj.assign(N+1, {});
  done.assign(N+1, false);
  visited.assign(N+1, false);
  for(int i = 0;i<M;i++){
    adj[A[i]].push_back(B[i]);
    adj[B[i]].push_back(A[i]);
  }
  ans.assign(5 * N, vector<int>(5 * N, 1));
  dfs(1);
  while(ans.size()>cl)ans.pop_back();
  for(auto &thing:ans)while(thing.size()>cl)thing.pop_back();
  return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...