제출 #978166

#제출 시각아이디문제언어결과실행 시간메모리
978166LOLOLOTraffic (IOI10_traffic)C++17
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> #define ll long long using namespace std; #define f first #define s second #define pb push_back #define ep emplace #define eb emplace_back #define lb lower_bound #define ub upper_bound #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define uniquev(v) sort(all(v)), (v).resize(unique(all(v)) - (v).begin()) #define mem(f,x) memset(f , x , sizeof(f)) #define sz(x) (int)(x).size() #define __lcm(a, b) (1ll * ((a) / __gcd((a), (b))) * (b)) #define mxx *max_element #define mnn *min_element #define cntbit(x) __builtin_popcountll(x) #define len(x) (int)(x.length()) const int N = 3e5 + 10; vector <int> ed[N]; ll f[N], a[N], sz[N]; void dfs(int u, int v) { auto it = find(all(ed[u]), v); if (it != ed[u].end()) ed[u].erase(it); for (auto x : ed[u]) { sz[u]++; dfs(x, u); f[u] = max(f[u], f[x] + a[x]); } } //before -> u is v's parent void reroot(int u, int v) { f[v] = max(f[v], f[u] + a[u]); } ll ans = 1e18, id = 0; void dfs2(int u) { if (ans > f[u]) { ans = f[u]; id = u; } sort(all(ed[u]), [&] (int x, int y) {return f[x] + a[x] > f[y] + a[y];}); for (int i = 0; i < sz(ed[u]); i++) { int x = ed[u][i]; ll p1 = f[u], p2 = f[x]; if (sz(ed[u]) == 1) { f[u] = 0; } else { if (i == 0) { f[u] = f[ed[u][1]] + a[ed[u][1]]; } else { f[u] = f[ed[u][0]] + a[ed[u][0]]; } } reroot(u, x); dfs2(x); f[u] = p1, f[x] = p2; } } int LocateCentre(int n, vector <int> P, vector <int> S, vector <int> D) { ans = 1e18; for (int i = 0; i < n - 1; i++) { ed[S[i]].pb(D[i]); ed[D[i]].pb(S[i]); } for (int i = 1; i <= n; i++) a[i - 1] = P[i - 1]; dfs(0, 0); dfs2(0); return id; }

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

/usr/bin/ld: /tmp/ccosbeId.o: in function `main':
grader.cpp:(.text.startup+0xe1): undefined reference to `LocateCentre(int, int*, int*, int*)'
collect2: error: ld returned 1 exit status