제출 #330974

#제출 시각아이디문제언어결과실행 시간메모리
330974quindecim경주 (Race) (IOI11_race)C++17
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; #define F first #define S second const int MX = 200005; const int INF = 0x3f3f3f3f; int k, ans = INF, sz[MX], val[1000010], used[300005]; vector<pair<int, int>> adj[MX], tmp; bitset<MX> vv; int dfs(int u, int p) { sz[u] = 1; for(auto v : adj[u]) if(v.F^p&&!vv[v.F]) sz[u] += dfs(v.F, u); return sz[u]; } void dfs2(int u, int p, int l, int d) { if(k-l<0) return; if(val[k-l]^INF) ans = min(ans, val[k-l]+d); tmp.push_back({l, d}); for(auto v : adj[u]) if(v.F^p&&!vv[v.F]) dfs2(v.F, u, l+v.S, d+1); } int get_centroid(int u, int p, int ss) { for(auto v : adj[u]) if(v.F^p&&!vv[v.F]&&sz[v.F]*2>ss) return get_centroid(v.F, u, ss); return u; } void centroid(int u, int p) { int C = get_centroid(u, -1, dfs(u, -1)); vv[C] = 1; int c = 0; for(auto v : adj[C]) { if(!vv[v.F]) { tmp.clear(); dfs2(v.F, C, v.S, 1); for(auto y : tmp) { if(y.F<=k) { val[y.F] = min(val[y.F], y.S); used[++c] = y.F; } } } } ans = min(ans, val[k]); while(c--) val[used[c]] = INF; for(auto v : adj[C]) if(v.F^p&&!vv[v.F]) centroid(v.F, C); } int best_path(int N, int K, int H[][2], int L[]) { fill(begin(val), end(val), INF); k = K; 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]}); } centroid(0, -1); if(ans==INF) ans = -1; return ans; } int main() { cin.tie(0)->sync_with_stdio(0); int n; cin >> n >> k; int h[n-1][2], l[n-1]; for(int i = 0; i < n-1; ++i) cin >> h[i][0] >> h[i][1] >> l[i]; cout << best_path(n, k, h, l) << endl; return 0; }

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

/tmp/ccCmj3V1.o: In function `main':
race.cpp:(.text.startup+0x0): multiple definition of `main'
/tmp/ccXVG9V3.o:grader.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status