Submission #1185403

#TimeUsernameProblemLanguageResultExecution timeMemory
1185403aaa2312Race (IOI11_race)C++20
Compilation error
0 ms0 KiB
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")

#include <bits/stdc++.h>

using namespace std;
using ll = long long;

const ll mod = 1e9 + 7;
const ll mod2 = 998244353;

ll gcd(ll a, ll b) {
    return b ? gcd(b, a % b) : a;
}

ll pow(ll a, ll b) {
    ll ans = 1;
    while (b) {
        if (b & 1) ans *= a;
        b >>= 1;
        a *= a;
    }
    return ans;
}

ll pow(ll a, ll b, ll c) {
    ll ans = 1;
    while (b) {
        if (b & 1) ans = (ans * a) % c;
        b >>= 1;
        a = (a * a) % c;
    }
    return ans;
}

void check(bool b) {
    if (b)
        cout << "Yes\n";
    else
        cout << "No\n";
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    ll n, k;
    cin >> n >> k;
    vector<vector<pair<ll, ll>>> adj(n);
    for (int i = 0; i < n - 1; ++i) {
        ll u, v, l;
        cin >> u >> v >> l;
        adj[u].push_back({v, l});
        adj[v].push_back({u, l});
    }
    vector<ll> dist(n);
    vector<ll> depth(n);
    function<void(ll, ll)> dfs = [&](ll u, ll p) {
        for (auto i: adj[u]) {
            if (i.first != p) {
                depth[i.first] = depth[u] + 1;
                dist[i.first] = dist[u] + i.second;
                dfs(i.first, u);
            }
        }
    };
    dfs(0, -1);
    ll ans = LLONG_MAX;
    vector<map<ll, ll>> mp(n);
    function<void(ll, ll)> dfs2 = [&](ll u, ll p) {
        mp[u][dist[u]] = depth[u];
        for (auto &[v, d]: adj[u]) {
            if (v != p) {
                dfs2(v, u);
                if (mp[v].size() > mp[u].size()) {
                    swap(mp[u], mp[v]);
                }
                for (auto &[de, mi]: mp[v]) {
                    if (mp[u].find(dist[u] + k - (de - dist[u])) != mp[u].end()) {
                        ans = min(ans, mi + mp[u][dist[u] + k - (de - dist[u])] - 2*depth[u]);
                    }
                }
                for (auto &[de, mi]: mp[v]) {
                    if (mp[u].find(de) == mp[u].end()) {
                        mp[u][de] = mi;
                    } else {
                        mp[u][de] = min(mp[u][de], mi);
                    }
                }
            }
        }
    };
    dfs2(0, -1);
    if (ans == LLONG_MAX) {
        cout << -1 << '\n';
    } else {
        cout << ans << '\n';
    }
    return 0;
}

Compilation message (stderr)

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