Submission #1163206

#TimeUsernameProblemLanguageResultExecution timeMemory
1163206DangKhoizzzz경주 (Race) (IOI11_race)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#define int long long
#define pii pair <int , int>
#define fi first
#define se second

using namespace std;

const int INF = 1e9;
const int maxn = 1e6 + 7;

int n , k , depth[maxn] , h[maxn] , ans = INF;
vector <pii> g[maxn];

void dfs_build(int u , int p)
{
    for(pii e: g[u])
    {
        int v = e.fi , w = e.se;
        if(v == p) continue;
        depth[v] = depth[u] + w;
        h[v] = h[u] + 1;
        dfs_build(v , u);
    }
}

void merging(map <int , int> &a , map <int , int> &b , int reqh , int reqdepth)
{
    if(a.size() < b.size()) swap(a , b);

    for(pii tmp: b)
    {
        int v1 = tmp.fi;
        int v2 = tmp.se;

        if(a.count(k - v1 + 2*reqdepth))
        {
            ans = min(ans , a[k - v1 + 2*reqdepth] + v2 - 2*reqh);
        }

        if(a.count(v1)) a[v1] = min(a[v1] , v2);
        else a[v1] = v2; 
    }

    if(a.count(k + reqdepth)) 
    {
        ans = min(ans , a[k + reqdepth] - reqh);
    }
}

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

    for(pii tmp: g[u])
    {
        int v = tmp.fi;
        if(v == p) continue;
        map <int , int> con = dfs(v , u);
        merging(res , con , h[u] , depth[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];
        u++ , v++;
        g[u].push_back({v , w});
        g[v].push_back({u , w});
    }
    dfs_build(1 , 1);
    dfs(1 , 1);

    if(ans == INF) return -1;
    return ans;
}

void solve()
{
    cin >> n >> k;
    for(int i = 1; i < n; i++)
    {
        int u , v , w;
        cin >> u >> v >> w;
        u++ , v++;
        g[u].push_back({v , w});
        g[v].push_back({u , w});
    }
    
    dfs_build(1 , 1);
    dfs(1 , 1);
    cout << ans << '\n';
}

// testing

signed main() 
{
    //solve();
    return 0;
}

Compilation message (stderr)

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