254132026-02-19 21:47:33CzDaniÚtadócpp17Wrong answer 0/50100ms9644 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

int n;
vector<vector<int>> adj;
vector<pair<int, pair<int, int>>> elek;

int dfs(int v, int p) {
    int db = 1;
    for (int u : adj[v]) {
        if (u==p)continue;
        db += dfs(u, v);
    }
    if (db<n)elek.push_back({db*(n-db), {v, p}});
    return db;
}

signed main() {
    cin >> n;
    adj.resize(n+1);
    for (int i = 1; i < n; i++) {
        int a, b;
        cin >> a >> b;
        adj[a].push_back(b);
        adj[b].push_back(a);
    }
    dfs(1, 0);
    vector<int> v(n-1);
    for (int i = 0; i < n-1; i++) {
        cin >> v[i];
    }
    sort(v.begin(),v.end());
    sort(elek.begin(),elek.end());
    int ans = 0;
    for (int i = 0; i < n-1; i++) {
        ans += elek[i].first*v[i];
    }
    cout << ans*2 << endl;
    for (int i = 0; i < n-1; i++) {
        cout << elek[i].second.first << ' ' << elek[i].second.second << ' ' << v[i] << '\n';
    }
}
SubtaskSumTestVerdictTimeMemory
base0/50
1Accepted0/01ms316 KiB
2Wrong answer0/037ms2588 KiB
3Wrong answer0/21ms316 KiB
4Wrong answer0/21ms316 KiB
5Wrong answer0/21ms388 KiB
6Wrong answer0/21ms316 KiB
7Wrong answer0/21ms316 KiB
8Wrong answer0/894ms9644 KiB
9Wrong answer0/23ms316 KiB
10Wrong answer0/22ms316 KiB
11Wrong answer0/22ms396 KiB
12Wrong answer0/22ms316 KiB
13Wrong answer0/23ms316 KiB
14Wrong answer0/297ms6312 KiB
15Wrong answer0/296ms6332 KiB
16Wrong answer0/297ms6312 KiB
17Wrong answer0/2100ms6316 KiB
18Wrong answer0/297ms6060 KiB
19Wrong answer0/297ms6056 KiB
20Wrong answer0/297ms6056 KiB
21Wrong answer0/297ms6060 KiB
22Wrong answer0/2100ms6060 KiB
23Wrong answer0/297ms6060 KiB
24Wrong answer0/297ms6056 KiB