27842023-01-24 19:38:17bzsofiaTevefarmcpp11Hibás válasz 38/50118ms24340 KiB
#include <iostream>
#include <vector>
#include <queue>
#include <string>

using namespace std;

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

int i, n, j, akt, agdb, agsum;
queue <int> 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;

    //cout<<x[1].teve;

    /*for (i=1; i<=; ++i)
    {
        cout<<i<<" ";
        for (auto &e:szint[i])
        {
            cout<<e<<" ";
        }
        cout<<"\n";
    }*/

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base38/50
1Elfogadva0/03ms1808 KiB
2Elfogadva0/03ms2260 KiB
3Elfogadva4/42ms2472 KiB
4Elfogadva4/42ms2524 KiB
5Elfogadva4/42ms2692 KiB
6Elfogadva4/43ms3028 KiB
7Elfogadva4/448ms16184 KiB
8Elfogadva6/657ms19004 KiB
9Elfogadva6/667ms21560 KiB
10Elfogadva6/681ms24340 KiB
11Hibás válasz0/6100ms20960 KiB
12Hibás válasz0/6118ms23172 KiB