254152026-02-19 21:53:01CzDaniÚtadócpp17Elfogadva 50/50101ms9644 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])%32609;
    }
    cout << (ans*2)%32609 << 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
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/039ms2628 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva8/897ms9644 KiB
9Elfogadva2/23ms316 KiB
10Elfogadva2/22ms316 KiB
11Elfogadva2/23ms316 KiB
12Elfogadva2/23ms316 KiB
13Elfogadva2/22ms360 KiB
14Elfogadva2/297ms6312 KiB
15Elfogadva2/297ms6312 KiB
16Elfogadva2/2101ms6312 KiB
17Elfogadva2/2100ms6272 KiB
18Elfogadva2/298ms6060 KiB
19Elfogadva2/2100ms6056 KiB
20Elfogadva2/298ms6080 KiB
21Elfogadva2/298ms6072 KiB
22Elfogadva2/298ms6056 KiB
23Elfogadva2/2101ms5964 KiB
24Elfogadva2/2101ms6060 KiB