Submission #161451

#TimeUsernameProblemLanguageResultExecution timeMemory
161451MinnakhmetovMuseum (CEOI17_museum)C++14
100 / 100
939 ms785264 KiB
#include <bits/stdc++.h>
    
#define ll long long
#define all(aaa) aaa.begin(), aaa.end()
 
using namespace std;

struct E {
    int to, w;
};

const int N = 1e4 + 5, K = N, INF = 1e9;
vector<E> g[N];
int dp[N][K][2], sz[N];
int n, k, x;

void upd(int &x, int y) {
    x = min(x, y);
}

void dive(int node, int anc) {
    sz[node] = 1;
    for (E e : g[node]) {
        if (e.to != anc) {
            dive(e.to, node);
            sz[node] += sz[e.to];
        }
    }
}

void dfs(int node, int h, int anc) {
    dp[node][1][0] = dp[node][1][1] = 0;

    int sum = 1;
    for (E e : g[node]) {
        if (e.to != anc) {
            dfs(e.to, h + 1, node);

            for (int x = min(sum, k - h); x > 0; x--) {
                for (int y = 1; y <= min(sz[e.to], k - h - x); y++) {
                    upd(dp[node][x + y][0], dp[node][x][0] + dp[e.to][y][1] + e.w * 2);
                    upd(dp[node][x + y][0], dp[node][x][1] + dp[e.to][y][0] + e.w);
                    upd(dp[node][x + y][1], dp[node][x][1] + dp[e.to][y][1] + e.w * 2);
                }
            }
            sum += sz[e.to];
        }
    }
}

signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);

    cin >> n >> k >> x;
    x--;

    for (int i = 0; i < n - 1; i++) {
        int a, b, c;
        cin >> a >> b >> c;
        a--, b--;
        g[a].push_back({b, c});
        g[b].push_back({a, c});
    }

    for (int i = 0; i < N; i++) {
        for (int j = 0; j < K; j++) {
            for (int k = 0; k < 2; k++) {
                dp[i][j][k] = INF;
            }
        }
    }

    dive(x, -1);
    dfs(x, 0, -1);

    cout << dp[x][k][0];
 
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...