Submission #1171735

#TimeUsernameProblemLanguageResultExecution timeMemory
1171735phungmanager0Race (IOI11_race)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #define FOR(i, a, b) for (int i = (a), _b = (b); i <= _b; i++) #define FORD(i, b, a) for (int i = (b), _a = (a); i >= _a; i--) #define REP(i, n) for (int i = 0, _n = (n); i < _n; i++) #define FORE(i, v) for (__typeof((v).begin()) i = (v).begin(); i != (v).end(); i++) #define ALL(v) (v).begin(), (v).end() #define IS_INF(x) (std::isinf(x)) #define IS_NAN(x) (std::isnan(x)) #define fi first #define se second #define int long long #define MASK(i) (1LL << (i)) #define BIT(x, i) (((x) >> (i)) & 1) #define div ___div #define prev ___prev #define next ___next #define left ___leftc #define right ___right #define __builtin_popcount __builtin_popcountll using namespace std; const int MAXN = 2e5 + 5; const int MVAL = 1e6 + 5; const int INF = 1e18; int n, k, Sz[MAXN], cnt[MVAL], mval = 0, ans = INF; bool del[MAXN]; vector<pair<int, int>> g[MAXN]; int CountChild(int u, int p = -1) { Sz[u] = 1; for(auto x : g[u]) { if(x.first != p && !del[x.first]) { Sz[u] += CountChild(x.first, u); } } return Sz[u]; } int FindCentroid(int u, int p, int n) { for(auto x : g[u]) { if(x.first != p && !del[x.first] && Sz[x.first] > n / 2) { return FindCentroid(x.first, u, n); } } return u; } void update(int u, int p, int prefix, int d = 1) { if(prefix > k) return; mval = max(mval, prefix); if(cnt[prefix] == 0 || d < cnt[prefix]) cnt[prefix] = d; for(auto x : g[u]) { if(x.first != p && !del[x.first]) { update(x.first, u, prefix + x.second, d + 1); } } } void query(int u, int p, int prefix, int d = 1) { if(prefix > k) return; mval = max(mval, prefix); if(prefix == k) ans = min(ans, d); else if(cnt[k - prefix]) ans = min(ans, cnt[k - prefix] + d); for(auto x : g[u]) { if(x.first != p && !del[x.first]) { query(x.first, u, prefix + x.second, d + 1); } } } void CentroidDecomposition(int u) { int n = CountChild(u); int root = FindCentroid(u, -1, n); del[root] = true; mval = 0; for(auto x : g[root]) { if(!del[x.first]) { query(x.first, root, x.second); update(x.first, root, x.second); } } for(int i = 0; i <= mval; i++) cnt[i] = 0; for(auto x : g[root]) { if(!del[x.first]) CentroidDecomposition(x.first); } } void loadtree() { cin >> n >> k; for(int i = 1; i < n; i++) { int u, v, l; cin >> u >> v >> l; g[u].push_back({v, l}); g[v].push_back({u, l}); } } signed main(void) { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); loadtree(); CentroidDecomposition(0); if(ans == INF) ans = -1; cout << ans; return 0; } // Author: Phung Duc Minh // Look at my code, my code is so amazing and legit // Try to be better!

Compilation message (stderr)

/usr/bin/ld: /tmp/ccqJVIEE.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccYvmha2.o:race.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccqJVIEE.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