Submission #1222048

#TimeUsernameProblemLanguageResultExecution timeMemory
1222048elaksherRace (IOI11_race)C++20
Compilation error
0 ms0 KiB
#include "race.h"
#include <bits/stdc++.h>
using namespace std;

#define int long long

map<int, int> stl[200005];
vector<pair<int, int>> adj[200005];
int dep[200005], dist[200005];
int n, k;
long long ans;

void init(int u = 0, int p = -1) {
    stl[u][dist[u]] = dep[u];
    for (auto [v, w] : adj[u]) {
        if (v != p) {
            dep[v] = dep[u] + 1;
            dist[v] = dist[u] + w;
            init(v, u);
        }
    }
}

void dfs(int u = 0, int p = -1) {
    long long target = k + 2 * dist[u];
    for (auto [v, w] : adj[u]) {
        if (v != p) {
            dfs(v, u);

            if (stl[v].size() > stl[u].size())
                swap(stl[u], stl[v]);

            for (auto [len, edges] : stl[v]) {
                if (stl[u].count(target - len)) {
                    ans = min(ans, stl[u][target - len] + edges - 2 * dep[u]);
                }
            }

            for (auto [len, edges] : stl[v]) {
                if (stl[u].count(len)) {
                    stl[u][len] = min(stl[u][len], edges);
                } else {
                    stl[u][len] = edges;
                }
            }
        }
    }
}

extern "C" {
int best_path(int _n, int _k, int h[][2], int l[]) {
    n = _n; k = _k;
    ans = 1e18;

    for (int i = 0; i < n; i++) {
        adj[i].clear();
        stl[i].clear();
        dep[i] = 0;
        dist[i] = 0;
    }

    for (int i = 0; i < n - 1; i++) {
        int u = h[i][0];
        int v = h[i][1];
        int w = l[i];
        adj[u].emplace_back(v, w);
        adj[v].emplace_back(u, w);
    }

    init();
    dfs();

    return ans == 1e18 ? -1 : ans;
}
}

Compilation message (stderr)

/usr/bin/ld: /tmp/cco1dQry.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