4665 2023. 03. 30 18:37:33 ZsofiaKeresztely Útadó cpp14 Elfogadva 50/50 104ms 19228 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
constexpr ll MOD = 32609;
#define fi first
#define se second
vector<vector<int> > g;
vector<int> p;
vector<pair<ll, int> > times;
ll n;

ll mul(ll a, ll b){
    a %= MOD;
    b %= MOD;
    return a * b % MOD;
}

int dfs(int v){
    ll r = 1;
    for (int x : g[v]){
        if (x == p[v]) continue;
        p[x] = v;
        r += dfs(x);
    }
    times[v].se = v;
    times[v].fi = r * 2 * (n - r);
    return r;
}

int main()
{
    cin >> n;
    g.resize(n+1);
    p.resize(n+1);
    times.resize(n+1);
    for (int i=0; i<n-1; i++){
        int a, b;
        cin >> a >> b;
        g[a].push_back(b);
        g[b].push_back(a);
    }
    p[1] = 0;
    dfs(1);
    vector<ll> w(n+1, 0);
    for (int i=2; i<=n; i++){
        cin >> w[i];
    }
    sort(w.begin(), w.end());
    sort(times.begin(), times.end());
    ll op = 0;
    for (int i=2; i<=n; i++){
        op += mul(w[i], times[i].fi);
        op %= MOD;
    }
    cout << op << "\n";
    for (int i=2; i<=n; i++){
        cout << times[i].se << " " << p[times[i].se] << " " << w[i] << "\n";
    }
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1816 KiB
2 Elfogadva 0/0 39ms 5192 KiB
3 Elfogadva 2/2 3ms 2228 KiB
4 Elfogadva 2/2 3ms 2340 KiB
5 Elfogadva 2/2 3ms 2536 KiB
6 Elfogadva 2/2 3ms 2748 KiB
7 Elfogadva 2/2 3ms 2964 KiB
8 Elfogadva 8/8 97ms 19228 KiB
9 Elfogadva 2/2 4ms 3448 KiB
10 Elfogadva 2/2 4ms 3660 KiB
11 Elfogadva 2/2 4ms 3712 KiB
12 Elfogadva 2/2 4ms 3864 KiB
13 Elfogadva 2/2 4ms 3820 KiB
14 Elfogadva 2/2 97ms 12100 KiB
15 Elfogadva 2/2 97ms 12060 KiB
16 Elfogadva 2/2 97ms 12064 KiB
17 Elfogadva 2/2 97ms 12316 KiB
18 Elfogadva 2/2 97ms 12272 KiB
19 Elfogadva 2/2 96ms 12272 KiB
20 Elfogadva 2/2 100ms 12340 KiB
21 Elfogadva 2/2 97ms 12344 KiB
22 Elfogadva 2/2 97ms 12344 KiB
23 Elfogadva 2/2 97ms 12556 KiB
24 Elfogadva 2/2 104ms 12544 KiB