9008 2024. 02. 11 17:29:19 xxx Útadó cpp17 Hibás válasz 10/50 157ms 27624 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
struct adat {
    int a, b, c, d, e;
};
const int MOD = 32609;
const int mxN = 1e5+1;
vector<vector<int> > adj;
vector<pair<int, int> > suly(mxN);
vector<adat> ans;
int n;

bool rendez(adat x, adat y) {
    if (x.e > y.e) {
        return true;
    }
    return false;
}

int dfs(int v, int p) {
    suly[v].first = 0;
    suly[v].second = 0;
    int cnt = 0;
    for(int u : adj[v]) {
        if (u != p) {
            if (cnt == 0) {
                suly[v].first = dfs(u, v);
                cnt++;
            } else if (cnt == 1) {
                suly[v].second = dfs(u, v);
                cnt++;
            } 
        }
    }
    return suly[v].first + suly[v].second + 1; 
}

void dfs2(int v, int p, int d) {
    int cnt = 0;
    for(int u : adj[v]) {
        if(u != p) {
            dfs2(u, v, cnt);
            cnt++;
        }
    }
    if (d == 0) {
        ans.push_back({suly[p].first, n-suly[p].first, p, v, 0});
    } else if (d == 1) {
        ans.push_back({n-suly[p].second, suly[p].second, p, v, 0});
    }
} 


signed main() {
    ios::sync_with_stdio(NULL); cin.tie(NULL); cout.tie(NULL);
    cin >> n;
    adj.resize(n+1);
    for(int i = 1; i < n; i++) {
        int x, y;
        cin >> x >> y;
        adj[x].push_back(y);
        adj[y].push_back(x);
    }

    dfs(1, -1);
    dfs2(1, 0, -1);


    vector<int> v(n);
    for(int i = 0; i < n; i++) {
        cin >> v[i];
    }
    sort(v.rbegin(), v.rend());

    for(auto& [x, y, z, cs, w] : ans) {
        w = x * y;
        w %= MOD;
    }

    sort(ans.begin(), ans.end(), rendez);

    int anscnt = 0;

    for(int i = 0; i < n-1; i++) {
        anscnt += ans[i].e * v[i];
        anscnt %= MOD;
    }

    cout << (anscnt * 2)%MOD << endl;

    for(int i = 0; i < n-1; i++) {
        cout << ans[i].c << ' ' << ans[i].d << ' ' << v[i] << endl;
    }
    
    

    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 10/50
1 Elfogadva 0/0 4ms 4788 KiB
2 Hibás válasz 0/0 46ms 10396 KiB
3 Elfogadva 2/2 4ms 5192 KiB
4 Elfogadva 2/2 4ms 5488 KiB
5 Elfogadva 2/2 4ms 5360 KiB
6 Elfogadva 2/2 4ms 5356 KiB
7 Elfogadva 2/2 4ms 5632 KiB
8 Hibás válasz 0/8 127ms 27624 KiB
9 Hibás válasz 0/2 7ms 6428 KiB
10 Hibás válasz 0/2 6ms 6460 KiB
11 Hibás válasz 0/2 6ms 6720 KiB
12 Hibás válasz 0/2 6ms 6588 KiB
13 Hibás válasz 0/2 6ms 6592 KiB
14 Hibás válasz 0/2 108ms 18240 KiB
15 Hibás válasz 0/2 141ms 18440 KiB
16 Hibás válasz 0/2 107ms 18712 KiB
17 Hibás válasz 0/2 134ms 18644 KiB
18 Hibás válasz 0/2 109ms 18640 KiB
19 Hibás válasz 0/2 116ms 18336 KiB
20 Hibás válasz 0/2 157ms 18504 KiB
21 Hibás válasz 0/2 119ms 18616 KiB
22 Hibás válasz 0/2 144ms 18696 KiB
23 Hibás válasz 0/2 152ms 18800 KiB
24 Hibás válasz 0/2 112ms 18804 KiB