9385 2024. 02. 21 11:36:31 szil Útadó cpp17 Elfogadva 50/50 57ms 20584 KiB
#include <bits/stdc++.h>

using ll = long long;
using namespace std;

const int MAXN = 50'001;
const int MOD = 32609;

struct Edge {
    ll w, u, v;

    Edge(int a, int b, int c) : w(a), u(b), v(c) {}
};

vector<int> g[MAXN];
ll s[MAXN], p[MAXN];

void dfs(int u) {
    s[u] = 1;
    for (int v : g[u]) {
        if (p[u] != v) {
            p[v] = u;
            dfs(v);
            s[u] += s[v];
        }
    }
}

void solve() {
    int n; cin >> n;
    for (int i = 0; i < n-1; i++) {
        int u, v; cin >> u >> v;
        g[u].emplace_back(v);
        g[v].emplace_back(u);
    }
    vector<ll> cost(n-1);
    for (ll &i : cost) cin >> i;
    dfs(1);
    vector<Edge> edges;
    for (int i = 2; i <= n; i++) {
        edges.emplace_back(s[i]*(n-s[i]), i, p[i]);
    }
    sort(cost.begin(), cost.end());
    sort(edges.begin(), edges.end(), [](const Edge &a, const Edge &b){
        return a.w < b.w;
    });
    ll ans = 0;
    for (int i = 0; i < n-1; i++) {
        ans += 2ll*edges[i].w*cost[i];
        ans %= MOD;
    }
    cout << ans << "\n";
    for (int i = 0; i < n-1; i++) {
        cout << edges[i].u << " " << edges[i].v << " " << cost[i] << "\n";
    }
}

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    int t = 1;
    // cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 4ms 4292 KiB
2 Elfogadva 0/0 24ms 8492 KiB
3 Elfogadva 2/2 4ms 4764 KiB
4 Elfogadva 2/2 4ms 4960 KiB
5 Elfogadva 2/2 4ms 5264 KiB
6 Elfogadva 2/2 4ms 5384 KiB
7 Elfogadva 2/2 4ms 5464 KiB
8 Elfogadva 8/8 54ms 20584 KiB
9 Elfogadva 2/2 4ms 5840 KiB
10 Elfogadva 2/2 4ms 5844 KiB
11 Elfogadva 2/2 4ms 6028 KiB
12 Elfogadva 2/2 4ms 6220 KiB
13 Elfogadva 2/2 4ms 6292 KiB
14 Elfogadva 2/2 54ms 14684 KiB
15 Elfogadva 2/2 54ms 14688 KiB
16 Elfogadva 2/2 52ms 14688 KiB
17 Elfogadva 2/2 52ms 14684 KiB
18 Elfogadva 2/2 54ms 14688 KiB
19 Elfogadva 2/2 54ms 14684 KiB
20 Elfogadva 2/2 57ms 14716 KiB
21 Elfogadva 2/2 54ms 14684 KiB
22 Elfogadva 2/2 56ms 14836 KiB
23 Elfogadva 2/2 54ms 14964 KiB
24 Elfogadva 2/2 56ms 15052 KiB