249492026-02-17 07:14:21szjÚtadócpp17Elfogadva 50/50120ms4404 KiB
#include <bits/stdc++.h>
#define ll long long
using namespace std;
struct cuc
{
    ll el=0, cur, su;
};
bool f(cuc a, cuc b)
{
    return a.su>b.su;
}
int main()
{
    //ifstream cin("f.txt");
    ios::sync_with_stdio(0);
    cin.tie(0);
    ll n, a, b, i, cica=0;
    cin >> n;
    ll apa[n+1]={0};
    cuc sum[n+1];
    ll alul[n+1]={};
    ll num[n+1]={};
    for(i=1; i<n; i++)
    {
        cin >> a >> b;
        apa[b]=a;
        num[a]++;
        sum[b].el=a;
        sum[b].cur=b;
    }
    queue<ll>q;
    for(i=1; i<=n; i++)
    {
        alul[i]=1;
        if(!num[i])q.push(i);
    }
    while(!q.empty() && q.front()!=1)
    {
        a=q.front();
        q.pop();
        num[apa[a]]--;
        sum[a].su=2*alul[a]*(n-alul[a]);
        alul[apa[a]]+=alul[a];
        if(num[apa[a]]==0)q.push(apa[a]);
    }
    sort(sum+2, sum+n+1, f);
    ll values[n];
    for(i=1; i<n; i++)cin >> values[i];
    sort(values+1, values+n, greater<ll>());
    for(i=1; i<n; i++)cica=(cica+values[i]*sum[i+1].su)%32609;
    cout << cica << endl;
    for(i=2; i<=n; i++)cout << sum[i].el << " " << sum[i].cur << " " << values[i-1] << endl;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/043ms1840 KiB
3Elfogadva2/21ms508 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva8/8112ms4052 KiB
9Elfogadva2/23ms316 KiB
10Elfogadva2/23ms316 KiB
11Elfogadva2/23ms316 KiB
12Elfogadva2/23ms316 KiB
13Elfogadva2/23ms508 KiB
14Elfogadva2/2120ms4404 KiB
15Elfogadva2/2112ms4324 KiB
16Elfogadva2/2104ms4404 KiB
17Elfogadva2/2104ms4404 KiB
18Elfogadva2/2107ms4404 KiB
19Elfogadva2/2104ms4148 KiB
20Elfogadva2/2104ms4308 KiB
21Elfogadva2/2104ms4148 KiB
22Elfogadva2/2103ms4160 KiB
23Elfogadva2/2108ms4148 KiB
24Elfogadva2/2108ms4148 KiB