제출 #466581

#제출 시각아이디문제언어결과실행 시간메모리
466581dattranxxx경주 (Race) (IOI11_race)C++11
컴파일 에러
0 ms0 KiB
#include "race.h" /* * Author : shora */ #include <bits/stdc++.h> #define print(_v) for (auto &_ : _v) {cerr << _ << ' ';} cerr << endl; using namespace std; using ll = long long; const int oo = 1e9; const int N = 5e5, MAXK = 1e6; struct C { int v, w; C(int v, int w): v(v), w(w) {} }; vector<C> G[N]; int vis[N], size[N], f[MAXK + 1], dep[N]; int k; int res = oo; void find_size(int u, int e = -1) { size[u] = 1; for (C& c : G[u]) if (c.v != e && !vis[c.v]) { find_size(c.v, u); size[u] += size[c.v]; } } int centroid(int s, int u, int e = -1) { for (C& c : G[u]) if (c.v != e && !vis[c.v]) if (size[c.v] > s / 2) return centroid(s, c.v, u); return u; } void get(int u, int e, int dis) { if (k < dis) return; dep[u] = dep[e] + 1; if (f[k - dis] != oo) res = min(res, f[k - dis] + dep[u]); for (C& c : G[u]) if (c.v != e && !vis[c.v]) { get(c.v, u, dis + c.w); } } void update(int u, int e, int dis) { if (k < dis) return; f[dis] = min(f[dis], dep[u]); for (C& c : G[u]) if (c.v != e && !vis[c.v]) { update(c.v, u, dis + c.w); } } void clear(int u, int e = -1, int dis = 0) { if (k < dis) return; dep[u] = 0; for (C& c : G[u]) if (c.v != e && !vis[c.v]) { clear(c.v, u, dis + c.w); } f[dis] = oo; } void solve(int u) { find_size(u); u = centroid(size[u], u); vis[u] = 1; f[0] = 0; for (C& c : G[u]) if (!vis[c.v]) { get(c.v, u, c.w); update(c.v, u, c.w); } clear(u); for (C& c : G[u]) if (!vis[c.v]) solve(c.v); }

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

/usr/bin/ld: /tmp/cct1gPwv.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