제출 #1170765

#제출 시각아이디문제언어결과실행 시간메모리
1170765nguyenkhangninh99경주 (Race) (IOI11_race)C++20
컴파일 에러
0 ms0 KiB


#include <bits/stdc++.h>

using namespace std;

#define int long long

const int maxn = 1e6 + 5;

int d[maxn], h[maxn];
vector<pair<int, int>> g[maxn];
int ans = 1e9;
int n, k;

void dfs0(int u, int p){
    for(auto [v, w]: g[u]){
        if(v == p) continue;
        d[v] = d[u] + w;
        h[v] = h[u] + 1;
        dfs0(v, u);
    }
}


void merge(map<int, int> &a, map<int, int> &b, int rh, int rd){
    if((int)a.size() < (int)b.size()) swap(a , b);

    for(auto [v1, v2]: b){
        if(a.count(k - v1 + 2 * rd)) ans = min(ans, a[k - v1 + 2 * rd] + v2 - 2 * rh);
    }

    for(auto [v1, v2]: b){
        if(a.count(v1)) a[v1] = min(a[v1], v2);
        else a[v1] = v2;
    }

    if(a.count(k + rd)) ans = min(ans, a[k + rd] - rh);
}

map<int, int> dfs(int u , int p){
    map<int, int> res;
    res[d[u]] = h[u];

    for(auto [v, w]: g[u]){
        if(v == p) continue;
        map<int, int> f = dfs(v, u);
        merge(res, f, h[u], d[u]);
    }
    return res;
}


int best_path(int N, int K, int H[][2], int L[]){
    n = N;
    k = K;

    for(int i = 0; i < n - 1; i++){
        int u = H[i][0], v = H[i][1], w = L[i];
        g[++u].push_back({++v, w});
        g[v].push_back({u, w});
    }

    dfs0(1, 1);
    dfs(1, 1);

    if(ans > n) return -1;
    return ans;
}

컴파일 시 표준 에러 (stderr) 메시지

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