9201 2024. 02. 18 16:07:15 BenedekMarton Tevefarm cpp17 Részben helyes 32/50 93ms 14612 KiB
#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    cin >> n;
    int tevter[n+1];
    for(int i=1; i<=n; i++)
    {
        cin >> tevter[i];
    }
    int osv[n+1];
    osv[1]=0;
    for(int i=2; i<=n; i++)
    {
        cin >> osv[i];
    }
    vector <int> gyv[n+1];
    for(int i=1; i<=n; i++)
    {
        gyv[osv[i]].push_back(i);
    }
    int  keszgyersz[n+1], osztev[n+1];
    bool kiv[n+1];
    for(int i=1; i<=n; i++)
    {
        kiv[i]=0;
        keszgyersz[i]=0;
    }
    queue <int> q;
    for(int i=1; i<=n; i++)
    {
        if(gyv[i].size()==0)
        {
            q.push(i);
        }
    }
    int x, gyosz;
    while(!q.empty())
    {
        x=q.front();
        q.pop();
        gyosz=0;
        for(int i=0; i<gyv[x].size(); i++)
        {
            gyosz=gyosz+osztev[gyv[x][i]];
        }
        if(gyosz>tevter[x])
        {
            osztev[x]=gyosz;
        }
        else
        {
            osztev[x]=tevter[x];
            kiv[x]=1;
        }
        keszgyersz[osv[x]]++;
        //cout << x << " " << osztev[x] << endl;
        if(x!=0)
        {
            if(keszgyersz[osv[x]]==gyv[osv[x]].size())
            {
                q.push(osv[x]);
            }
        }
    }
    cout << osztev[1] << endl;
    vector <int> megoldas;
    /*if(kiv[1])
    {
        cout << 1 << endl << 1;
        return 0;
    }*/
    q.push(1);
    while(!q.empty())
    {
        x=q.front();
        q.pop();
        for(int i=0; i<gyv[x].size(); i++)
        {
            if(kiv[gyv[x][i]])
            {
                megoldas.push_back(gyv[x][i]);
            }
            else
            {
                q.push(gyv[x][i]);
            }
        }
    }
    cout << megoldas.size() << endl;
    for(int i=0; i<megoldas.size(); i++)
    {
        cout << megoldas[i] << " ";
    }
    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 32/50
1 Elfogadva 0/0 3ms 1812 KiB
2 Elfogadva 0/0 3ms 2240 KiB
3 Részben helyes 2/4 3ms 2264 KiB
4 Elfogadva 4/4 3ms 2432 KiB
5 Futási hiba 0/4 3ms 2500 KiB
6 Elfogadva 4/4 3ms 2824 KiB
7 Elfogadva 4/4 41ms 9032 KiB
8 Elfogadva 6/6 50ms 10248 KiB
9 Elfogadva 6/6 59ms 11720 KiB
10 Elfogadva 6/6 67ms 12832 KiB
11 Hibás válasz 0/6 82ms 13520 KiB
12 Hibás válasz 0/6 93ms 14612 KiB