2785 2023. 01. 24 19:39:35 bzsofia Tevefarm cpp11 Elfogadva 50/50 115ms 31972 KiB
#include <iostream>
#include <vector>
#include <queue>
#include <string>

using namespace std;

struct adat
{
    long long tav, db, sum;
    string tevek;
    vector <long long> sz;
    bool lat;
};

long long i, n, j, akt, agdb, agsum;
queue <long long> s;
string agteve;

int main()
{
    cin>>n;
    vector <adat> x(n+1);
    //vector <vector <int>> szint(n+1);

    for (i=1; i<=n; ++i)
    {
        cin>>x[i].sum;
        x[i].db=1;
        x[i].tevek=to_string(i)+" ";
    }

    for (i=2; i<=n; ++i)
    {
        cin>>j;

        x[j].sz.push_back(i);
    }

    x[1].lat=1;
    x[1].tav=1;
    s.push(1);
    //szint[1].push_back(1);
    while (!s.empty())
    {
        akt=s.front();
        s.pop();
        for (auto &e:x[akt].sz)
        {
            if (!x[e].lat)
            {
                x[e].lat=1;
                x[e].tav=x[akt].tav+1;
                s.push(e);
                //szint[x[e].tav].push_back(e);
            }
        }
    }

    for (i=n; i>=1; --i)
    {
        agsum=0;
        agdb=0;
        agteve="";
        for (auto &e:x[i].sz)
        {
            agsum+=x[e].sum;
            agteve+=x[e].tevek;
            agdb+=x[e].db;
        }

        if (x[i].sum<agsum)
        {
            x[i].tevek=agteve;
            x[i].sum=agsum;
            x[i].db=agdb;
        }
    }

    cout<<x[1].sum<<"\n"<<x[1].db<<"\n"<<x[1].tevek;

    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1812 KiB
2 Elfogadva 0/0 3ms 2324 KiB
3 Elfogadva 4/4 2ms 2268 KiB
4 Elfogadva 4/4 2ms 2484 KiB
5 Elfogadva 4/4 2ms 2856 KiB
6 Elfogadva 4/4 3ms 3128 KiB
7 Elfogadva 4/4 46ms 17328 KiB
8 Elfogadva 6/6 57ms 20312 KiB
9 Elfogadva 6/6 67ms 22788 KiB
10 Elfogadva 6/6 79ms 25860 KiB
11 Elfogadva 6/6 105ms 29156 KiB
12 Elfogadva 6/6 115ms 31972 KiB