Submission #1256570

#TimeUsernameProblemLanguageResultExecution timeMemory
1256570ThylOne세계 지도 (IOI25_worldmap)C++20
72 / 100
74 ms9596 KiB
#include "worldmap.h"
#include <bits/stdc++.h>

using namespace std;
using grid = vector<vector<int>>;

vector<int> links[40];
vector<vector<int>> euleur_tour;
bool mem[40];
int K;
void uniform_line(int i){
  euleur_tour.push_back({});
  euleur_tour[euleur_tour.size()-1].resize(K, i +1);
}
void add_damage(int i, vector<int> v){
  euleur_tour.push_back(vector<int>(K,i+1));
  for(int j = 0 ; j < v.size() ; j++)
    euleur_tour[euleur_tour.size()-1][2*j] = v[j]+1;
}
int depth[40];
set<int> on_stack;
void dfs(int node,int papa=-1){
  on_stack.insert(node);
  uniform_line(node);
  mem[node] = true;
  vector<int> to_dam;
  for(int u:links[node]){
    if(mem[u]){
      if(on_stack.find(u)!=on_stack.end() && u!=papa){
        to_dam.push_back(u);
      }
    }else{
      depth[u] = depth[node] + 1;
      dfs(u, node);
      uniform_line(node);
    }  
  }
  on_stack.erase(node);
  add_damage(node, to_dam);
  uniform_line(node);
}
grid create_map(int N, int M, std::vector<int> A, std::vector<int> B) {
  for(int i = 0 ; i < N ; i++)links[i].clear();
  euleur_tour.clear();
  K  = 4*N-1;
  fill(mem, mem+40,false);
  fill(depth, depth+40,0);

  grid ans(K, std::vector<int>(K, 1));
  
  for(int i = 0 ; i < M ; i++){
    A[i]--;
    B[i]--;
    links[A[i]].push_back(B[i]);
    links[B[i]].push_back(A[i]);
  }
  dfs(0);
  cerr << N << " " << euleur_tour.size() << endl;
  //assert(euleur_tour.size()==2*N-2);
  for(int i =0 ; i < euleur_tour.size() ;i++){
    ans[i] = euleur_tour[i];
  }
  //TODO penser au plus 1 partout pour les valeurs
  for(int i = euleur_tour.size(); i < K ; i++){
    ans[i] = ans[euleur_tour.size()-1];
  }
  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...