Submission #906184

#TimeUsernameProblemLanguageResultExecution timeMemory
906184MinhKhoiRace (IOI11_race)C++14
Compilation error
0 ms0 KiB
#pragma GCC             optimize("Ofast")
#pragma GCC             optimize("O3")
#pragma GCC             optimize("unroll-loops")
#pragma GCC             target("avx,avx2,fma")
#include<bits/stdc++.h>
typedef unsigned long long     ull;
typedef long double            ld;
typedef long long              ll;
using namespace std;

const double eps    =   1e-8;
const ll Base       =   31;
const ll MAX        =   1e6 + 2;
const ll Mod        =   1e9 + 7;
const ll inf        =   1e18;
const ll N          =   2e5 + 10;

// VARIABLE
#define umap            unordered_map
#define pque            priority_queue
#define mset            multiset
#define pii             pair<int, int>
#define pll             pair<ll, ll>
#define fi              first
#define se              second
#define vI              vector<int>
#define vL              vector<ll>
#define mp              make_pair
// SHORTCUTS
#define redup(s)        sort(all(s)), (s).resize(unique(all(s)) - (s).begin())
#define all(s)          s.begin(), s.end()
#define lb              lower_bound
#define ub              upper_bound
#define pb              push_back
#define eb              emplace_back
// FUNCTIONS
#define fu(i, a, b)     for(int i = a; i <= b; ++i)
#define fd(i, a, b)     for(int i = a; i >= b; --i)
#define fe(i, adj)      for(auto i : adj)
#define debug(...)      " [" << #__VA_ARGS__ " = " << (__VA_ARGS__) << "] "
#define mask(s)         (1LL << (s))
#define sz(s)           (int) s.size()
#define fs(s)           fixed << setprecision(s)

// TEMPLATE
template <class T>
    bool minimize(T &x, T y){return (x > y ? x = y, 1 : 0);}

template <class T>
    bool maximize(T &x, T y){return (x < y ? x = y, 1 : 0);}

template <class T>
    void add(T &x, T y){x += y; if(x >= Mod) x -= Mod;}

template <class T>
    void sub(T &x, T y){x -= y; if(x < 0) x += Mod;}

// CAL
#define gcd(x, y)       __gcd(x, y)
#define lcm(x, y)       (x) / gcd(x, y) * y
#define sqr(x)          abs(x) * abs(x)
// BITWISE
#define bit(msk, i)     (msk >> i) & 1
#define logOf(msk)      63 - clz(msk)
#define lbit(msk)       ((msk) & (-msk))
#define cbit(msk)       __builtin_popcountll(msk)
#define ctz(msk)        __builtin_ctzll(msk)
#define clz(msk)        __builtin_clzll(msk)

int dx[8] = {1, -1, 0, 0, 1, 1, -1, -1},
    dy[8] = {0, 0, 1, -1, 1, -1, 1, -1};
/*
-----------------------------------------
🛸    🌎    ★    🛰    °    🚀    ✯
    ★     °   ☄    ✯    ★    °    🪐
✯    🚀    •   🌓   °    🛰   •   ☄
_________________________________________
*/
/// ===================================== - MAIN - ===================================== ///
#define File ""
int n, child[N];
bool vs[N];
ll k, ans = inf, weight = 0, cnt[MAX];
vector<pii> adj[N];
void dfs(int u, int p){
    child[u] = 1;
    fe(v, adj[u]) if(v.fi != p && !vs[v.fi]) dfs(v.fi, u), child[u] += child[v.fi];
}
int centroid(int u, int p, int cur){
    fe(v, adj[u]) if(v.fi != p && !vs[v.fi] && (child[v.fi] << 1) > cur) return centroid(v.fi, u, cur);
    return u;
}
void build(int u, int p, bool flag, ll cost, int depth = 2){
    if(cost > k) return;
    maximize(weight, cost);
    if(flag) minimize(cnt[cost], 1LL * depth);
    else{
        minimize(ans, cnt[k - cost] + depth - 2);
    }
    fe(v, adj[u]) if(v.fi != p && !vs[v.fi]) build(v.fi, u, flag, cost + v.se, depth + 1);
}
void solve(int u){
    dfs(u, 0);
    int nxt = centroid(u, 0, child[u]);
    weight = 0;
    fe(v, adj[nxt]) if(!vs[v.fi]){
        build(v.fi, nxt, false, v.se);
        build(v.fi, nxt, true, v.se);
    }
    memset(cnt, 0x3f, (weight + 1) * sizeof(ll));
    vs[nxt] = true;
    fe(v, adj[nxt]) if(!vs[v.fi]) solve(v.fi);
}
int main(){
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    
    cin >> n >> k;
    fu(i, 2, n){
        int u, v, l; cin >> u >> v >> l;
        adj[++u].pb(mp(++v, l)), adj[v].pb(mp(u, l));
    }
    //memset(cnt, 0x3f, (weight + 2) * sizeof(ll));
    memset(cnt, 0x3f, sizeof(cnt));
    solve(1);
    cout << (ans == inf ? -1 : ans);
    return 0;
}

Compilation message (stderr)

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