249482026-02-17 07:09:12szjÚtadócpp17Hibás válasz 25/5032ms2968 KiB
#include <bits/stdc++.h>
#define ll long long
using namespace std;
struct cuc
{
    ll el=0, 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;
    }
    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 << " " << i << " " << values[i-1] << endl;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base25/50
1Hibás válasz0/01ms316 KiB
2Hibás válasz0/012ms1332 KiB
3Részben helyes1/21ms316 KiB
4Részben helyes1/21ms316 KiB
5Részben helyes1/21ms316 KiB
6Részben helyes1/21ms316 KiB
7Részben helyes1/21ms316 KiB
8Részben helyes4/832ms2688 KiB
9Részben helyes1/21ms316 KiB
10Részben helyes1/21ms316 KiB
11Részben helyes1/21ms316 KiB
12Részben helyes1/21ms500 KiB
13Részben helyes1/21ms316 KiB
14Részben helyes1/228ms2968 KiB
15Részben helyes1/228ms2868 KiB
16Részben helyes1/228ms2868 KiB
17Részben helyes1/228ms2824 KiB
18Részben helyes1/228ms2868 KiB
19Részben helyes1/228ms2868 KiB
20Részben helyes1/228ms2868 KiB
21Részben helyes1/228ms2868 KiB
22Részben helyes1/228ms2868 KiB
23Részben helyes1/229ms2868 KiB
24Részben helyes1/228ms2872 KiB