제출 #1264517

#제출 시각아이디문제언어결과실행 시간메모리
1264517thecyb경주 (Race) (IOI11_race)C++17
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>

#define ll long long
#define ld long double
#define ff first
#define ss second

void steroids() {
  std::ios_base::sync_with_stdio(false);
  std::cin.tie(0);
}

const int N = 2e5;
const int inf = 1e9;
std::vector<std::pair<int, int>> adj[N];
int h[N][2];
int l[N];
int d[N];
ll dis_from_root[N];
int n, k;
int ans;
std::map<ll, int> paths[N];

void dfs(const int &u, const int &par, const ll &cur_dist, const int &cur_height) {
  paths[u][cur_dist] = cur_height;
  dis_from_root[u] = cur_dist;
  d[u] = cur_height;
  for (const auto &p : adj[u]) {
    if (p.ff != par){
      dfs(p.ff, u, cur_dist + p.ss, cur_height + 1);
    }
  }
}

void smol_to_larg(const int &u, const int &p) {
  ll target = 0LL + k + 2 * dis_from_root[u];
  for (const auto &[v, w] : adj[u]) {
    if (v != p) {
      smol_to_larg(v, u);
      if (paths[v].size() > paths[u].size()) paths[u].swap(paths[v]);
      for (const auto &[len, dis] : paths[v]) {
        if (paths[u].find(target - len) != paths[u].end()) {
          ans = std::min(ans, dis + paths[u][target-len] - 2 * d[u]);
        }
      }
      for (const auto &p : paths[v]) {
        if (paths[u].find(p.ff) == paths[u].end()) {
          paths[u].insert(p);
        } else {
          paths[u][p.ff] = std::min(paths[u][p.ff], p.ss);
        }
      }
    }
  }
}

int best_path(const int &Num, const int &Req, int h[][2], int l[]){
  n = Num;
  k = Req;
  ans = inf;
  for (int i = 0; i < n-1; i++) {
    adj[h[i][0]].push_back({h[i][1], l[i]});
    adj[h[i][1]].push_back({h[i][0], l[i]});
  }
  d[0] = 0;
  dfs(0, -1, 0, 0);
  smol_to_larg(0, -1);
  return ans == inf ? -1 : ans;
}

/*int main() {
  steroids();
  int nn, kk;
  std::cin >> nn >> kk;
  for (int i = 0; i < nn-1; i++) {
    std::cin >> h[i][0] >> h[i][1];
  }
  for (int i = 0; i < nn-1; i++) {
    std::cin >> l[i];
  }
  std::cout << best_path(nn, kk, h, l);
}
*/

컴파일 시 표준 에러 (stderr) 메시지

/usr/bin/ld: /tmp/ccve3ZOU.o: in function `main':
grader.cpp:(.text.startup+0x28): undefined reference to `best_path(int, int, int (*) [2], int*)'
collect2: error: ld returned 1 exit status