Submission #1314253

#TimeUsernameProblemLanguageResultExecution timeMemory
1314253sfsdafRace (IOI11_race)C++17
Compilation error
0 ms0 KiB
#include<bits/stdc++.h> using namespace std; #define endl '\n' #define int long long #define FOR(i, a, b) for(int i = (a); i <= (b); i++) #define FORN(i, a, b) for(int i = (a); i >= (b); i--) #define all(a) (a).begin(), (a).end() #define sz(a) (int)(a).size() #define ull unsigned long long #define pb push_back #define fi first #define se second #define BIT(mask, i) mask & (1 << i) #define sp(x) setprecision(x) << fixed const int maxn = 2e5; int n, tot, k, ans = INT_MAX; vector<pair<int, int>> g[maxn + 5]; vector<int> min_edge(maxn + 5, INT_MAX); vector<int> touched; int num[maxn + 5], del[maxn + 5]; void calc_num(int u, int p){ tot++; num[u] = 1; for(auto [v, w] : g[u]){ if(v == p || del[v]) continue; calc_num(v, u); num[u] += num[v]; } } int find_cen(int u, int p){ for(auto [v, w] : g[u]){ if(v == p || del[v] || num[v] <= tot / 2) continue; return find_cen(v, u); } return u; } void dfs_collect(int u, int p, int wei, int dep, vector<pair<int, int>> &deps){ deps.pb({wei, dep}); for(auto [v, w] : g[u]){ if(v == p || del[v]) continue; dfs_collect(v, u, wei + w, dep + 1, deps); } } void decompose(int u){ tot = 0; calc_num(u, 0); int cen = find_cen(u, 0); del[cen] = 1; for(auto [v, w] : g[cen]){ if(del[v]) continue; vector<pair<int, int>> deps; dfs_collect(v, cen, w, 1, deps); for(auto [wei, dep] : deps){ if(wei <= k){ ans = min(ans, dep + min_edge[k - wei]); } } for(auto [wei, dep] : deps){ if(wei <= k){ touched.pb(wei); min_edge[wei] = min(min_edge[wei], dep); } } } for(auto x : touched) min_edge[x] = INT_MAX; for(auto [v, w] : g[cen]){ if(del[v]) continue; decompose(v); } } void solve(){ cin >> n >> k; FOR(i, 1, n - 1){ int x, y, w; cin >> x >> y >> w; g[x].pb({y, w}); g[y].pb({x, w}); } decompose(0); cout << (ans == INT_MAX ? -1 : ans); } signed main(){ if(fopen("input.txt", "r")) freopen("input.txt", "r", stdin); ios_base::sync_with_stdio(false); cin.tie(nullptr); int t = 1; //cin >> t; while(t--) solve(); return 0; }

Compilation message (stderr)

race.cpp: In function 'int main()':
race.cpp:91:40: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   91 |     if(fopen("input.txt", "r")) freopen("input.txt", "r", stdin);
      |                                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/ccUdqfxA.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccH5eCDh.o:race.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccUdqfxA.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