Submission #1210247

#TimeUsernameProblemLanguageResultExecution timeMemory
1210247pera기지국 (IOI20_stations)C++20
10 / 100
307 ms592 KiB
#include <bits/stdc++.h>
#include "stations.h"
using namespace std;

std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
	std::vector<int> labels(n);
	vector<vector<int>> g(n);
   for(int i = 0;i < n - 1;i ++){
      g[u[i]].emplace_back(v[i]);
      g[v[i]].emplace_back(u[i]);
   }
   int timer = 0;
   vector<int> in(n) , out(n);
   function<void(int , int)> dfs = [&](int u , int p){
      in[u] = timer++;
      for(int v : g[u]){
         if(v != p){
            dfs(v , u);
         }
      }
      out[u] = timer;
   };
   dfs(0 , 0);
   for(int i = 0;i < n;i ++){
      labels[i] = 1000 * in[i] + out[i];
   }
	return labels;
}

int find_next_station(int s, int t, std::vector<int> c) {
   auto f = [&](int l){
      return pair<int , int>{l / 1000 , l % 1000};
   };
   int ans;
   auto [ni , nj] = f(s);
   auto [nx , ny] = f(t);
   int parent;
   for(int x : c){
      auto [l , r] = f(x);
      if(l <= ni && nj <= r){
         parent = x;
         break;
      }
   }
   if(ni <= nx && ny <= nj){
      for(auto x : c){
         auto [l , r] = f(x);
         if(l <= nx && ny <= r && x != parent){
            return x;
         }
      }
   }
   return parent;
}

#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...