2819 2023. 01. 26 13:54:06 bzsofia Útadó cpp11 Hibás válasz 25/50 114ms 16396 KiB
// Utado.cpp : This file contains the 'main' function. Program execution begins and ends there.
//

#include <iostream>
#include <vector>
#include <map>
#include <queue>
#include <algorithm>

using namespace std;

struct adat
{
    bool lat=0;
    int ag = 1;
    vector <int> sz;
};

struct adat2
{
    int db=0;
    pair<int, int> par;
};

struct adat3
{
    int cost, poz;
    pair <int, int> elek;
};

int i, n, a, b, mod=32609;
long long sum;
vector <adat> x;

void mely(int akt)
{
    x[akt].lat = 1;
    for (auto& e : x[akt].sz)
    {
        if (!x[e].lat)
        {
            mely(e);
            x[akt].ag += x[e].ag;
        }
    }
}

bool comp(adat3 a, adat3 b)
{
    return a.cost<b.cost;
}

bool comp2(adat2 a, adat2 b)
{
    return a.db < b.db;
}

bool comp3(adat3 a, adat3 b)
{
    return a.poz < b.poz;
}

int main()
{
    cin >> n;
    vector <adat2> el(n);
    vector <adat3> ar(n);
    x.resize(n + 1);

    for (i = 1; i < n; ++i)
    {
        cin >> a >> b;

        el[i].par = { a, b };
        x[a].sz.push_back(b);
        x[b].sz.push_back(a);
    }

    for (i = 1; i < n; ++i)
    {
        cin >> ar[i].cost;
        ar[i].poz = i;
    }

    mely(1);

    sort(ar.begin() + 1, ar.end(), comp);

    for (i = 1; i < n; ++i)
    {
        b = el[i].par.second;
        el[i].db = 2 * x[b].ag * (n - x[b].ag);
        //cout << el[i].par.first << " " << el[i].par.second << " " << el[i].db << "\n";
    }

    sort(el.begin() + 1, el.end(), comp2);

    for (i = 1; i < n; ++i)
    {
        sum = (sum + (el[i].db * ar[i].cost)) % mod;
        ar[i].elek = { el[i].par.first, el[i].par.second };
    }

    sort(ar.begin() + 1, ar.end(), comp3);

    cout << sum<<"\n";
    for (i = 1; i < n; ++i)
    {
        cout << ar[i].elek.first << " " << ar[i].elek.second << " " << ar[i].cost << "\n";
    }

    return 0;
}

// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
// Debug program: F5 or Debug > Start Debugging menu

// Tips for Getting Started:
//   1. Use the Solution Explorer window to add/manage files
//   2. Use the Team Explorer window to connect to source control
//   3. Use the Output window to see build output and other messages
//   4. Use the Error List window to view errors
//   5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
//   6. In the future, to open this project again, go to File > Open > Project and select the .sln file
Részfeladat Összpont Teszt Verdikt Idő Memória
base 25/50
1 Elfogadva 0/0 3ms 1816 KiB
2 Hibás válasz 0/0 41ms 5476 KiB
3 Részben helyes 1/2 2ms 2220 KiB
4 Részben helyes 1/2 2ms 2452 KiB
5 Részben helyes 1/2 2ms 2692 KiB
6 Részben helyes 1/2 2ms 2764 KiB
7 Részben helyes 1/2 2ms 2860 KiB
8 Részben helyes 4/8 108ms 16396 KiB
9 Részben helyes 1/2 4ms 3280 KiB
10 Részben helyes 1/2 4ms 3300 KiB
11 Részben helyes 1/2 4ms 3284 KiB
12 Részben helyes 1/2 4ms 3264 KiB
13 Részben helyes 1/2 4ms 3652 KiB
14 Részben helyes 1/2 105ms 12396 KiB
15 Részben helyes 1/2 104ms 12272 KiB
16 Részben helyes 1/2 104ms 12272 KiB
17 Részben helyes 1/2 104ms 12328 KiB
18 Részben helyes 1/2 104ms 12544 KiB
19 Részben helyes 1/2 104ms 12732 KiB
20 Részben helyes 1/2 105ms 12808 KiB
21 Részben helyes 1/2 105ms 13004 KiB
22 Részben helyes 1/2 107ms 12876 KiB
23 Részben helyes 1/2 109ms 12880 KiB
24 Részben helyes 1/2 114ms 13132 KiB