254142026-02-19 21:50:45CzDaniÚtadócpp17Hibás válasz 35/50104ms9656 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)%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
base35/50
1Elfogadva0/01ms316 KiB
2Hibás válasz0/039ms2476 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms332 KiB
5Elfogadva2/21ms336 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Részben helyes4/894ms9656 KiB
9Elfogadva2/22ms516 KiB
10Elfogadva2/22ms316 KiB
11Elfogadva2/22ms508 KiB
12Elfogadva2/22ms316 KiB
13Elfogadva2/22ms332 KiB
14Részben helyes1/296ms6320 KiB
15Részben helyes1/297ms6112 KiB
16Részben helyes1/298ms6312 KiB
17Részben helyes1/297ms6316 KiB
18Részben helyes1/294ms6060 KiB
19Részben helyes1/297ms6072 KiB
20Részben helyes1/2101ms6056 KiB
21Részben helyes1/2100ms6060 KiB
22Részben helyes1/298ms6056 KiB
23Részben helyes1/2104ms6060 KiB
24Részben helyes1/296ms6060 KiB