151632025-02-14 12:03:48RRoliÚtadócpp17Wrong answer 3/5092ms6716 KiB
#include <bits/stdc++.h>
using namespace std;

int n;
vector<int> gyersz;
vector<vector<int>> fiu;
vector<pair<int, pair<int, int>>> el;

int gyerek(int k) {
    gyersz[k] += fiu[k].size();
    for(auto i : fiu[k]) gyersz[k] += gyerek(i);
    return gyersz[k];
}

int main() {
    cin >> n;
    fiu.resize(n+1, vector<int>(0)); gyersz.resize(n+1, 0); el.resize(n-1);
    for(int i = 0; i < n-1; i++) {
        int a, b;
        cin >> a >> b;
        fiu[a].push_back(b);
        el[i].second.first = a;
        el[i].second.second = b;
    }

    gyerek(1);
    for(int i = 0; i < n-1; i++) {
        el[i].first = 2*(1+gyersz[el[i].second.second])*(n-(1+gyersz[el[i].second.second]));
    }
    sort(el.begin(), el.end());

    vector<int> hosszak(n-1);
    for(int i = 0; i < n-1; i++) {
        cin >> hosszak[i];
    }
    sort(hosszak.begin(), hosszak.end());

    long long s = 0;
    for(int i = 0; i < n-1; i++) {
        s += hosszak[i]*el[i].first;
    }

    cout << s << '\n';
    for(int i = 0; i < n-1; i++) {
        cout << el[i].second.first << ' ' << el[i].second.second << ' ' << hosszak[i] << '\n';
    }

	return 0;
}
SubtaskSumTestVerdictTimeMemory
base3/50
1Accepted0/01ms500 KiB
2Wrong answer0/035ms2100 KiB
3Partially correct1/21ms316 KiB
4Partially correct1/21ms316 KiB
5Wrong answer0/21ms316 KiB
6Wrong answer0/21ms316 KiB
7Wrong answer0/21ms316 KiB
8Wrong answer0/887ms6716 KiB
9Wrong answer0/22ms460 KiB
10Wrong answer0/22ms316 KiB
11Wrong answer0/22ms316 KiB
12Wrong answer0/22ms416 KiB
13Wrong answer0/22ms316 KiB
14Wrong answer0/287ms4404 KiB
15Wrong answer0/287ms4228 KiB
16Wrong answer0/286ms4404 KiB
17Wrong answer0/290ms4404 KiB
18Wrong answer0/290ms4404 KiB
19Partially correct1/289ms4544 KiB
20Wrong answer0/289ms4664 KiB
21Wrong answer0/287ms4660 KiB
22Wrong answer0/290ms4660 KiB
23Wrong answer0/290ms4624 KiB
24Wrong answer0/292ms4660 KiB