254132026-02-19 21:47:33CzDaniÚtadócpp17Hibás válasz 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';
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/50
1Elfogadva0/01ms316 KiB
2Hibás válasz0/037ms2588 KiB
3Hibás válasz0/21ms316 KiB
4Hibás válasz0/21ms316 KiB
5Hibás válasz0/21ms388 KiB
6Hibás válasz0/21ms316 KiB
7Hibás válasz0/21ms316 KiB
8Hibás válasz0/894ms9644 KiB
9Hibás válasz0/23ms316 KiB
10Hibás válasz0/22ms316 KiB
11Hibás válasz0/22ms396 KiB
12Hibás válasz0/22ms316 KiB
13Hibás válasz0/23ms316 KiB
14Hibás válasz0/297ms6312 KiB
15Hibás válasz0/296ms6332 KiB
16Hibás válasz0/297ms6312 KiB
17Hibás válasz0/2100ms6316 KiB
18Hibás válasz0/297ms6060 KiB
19Hibás válasz0/297ms6056 KiB
20Hibás válasz0/297ms6056 KiB
21Hibás válasz0/297ms6060 KiB
22Hibás válasz0/2100ms6060 KiB
23Hibás válasz0/297ms6060 KiB
24Hibás válasz0/297ms6056 KiB