151762025-02-14 20:11:07szjTevefarmcpp17Részben helyes 36/50101ms4892 KiB
#include <bits/stdc++.h>

using namespace std;
struct csucs
{
    int cs, p;
};
vector<vector<int>>vec;
int osv[100000];
bool veg[100000], volt[100000];
int req(int n, int el)
{
    int sum=0;
    for(auto i:vec[el])sum+=req(osv[i], i);
    if(sum >= n)
    {
        volt[el] = 1;
        for(auto i:vec[el])if(!volt[i])
        {
            veg[i]=1;
            volt[i]=1;
        }
        return sum;
    }
    else
    {
        return n;
    }
}
void tis(int n, bool van)
{
    if(van)
    {
        veg[n] = 0;
        for(auto i:vec[n])tis(i, van);
    }
    else
    {
        if(veg[n])van =1;
        for(auto i: vec[n])tis(i, van);
    }
}
int main()
{
    int i, n, a, j;
    cin >> n;
    csucs e;
    vec.resize(n);
    for(i=0; i<n; i++)cin >> osv[i];
    for(i=1; i<n; i++)
    {
        cin >> a;
        vec[a-1].push_back(i);
    }
    cout << req(osv[0], 0) << endl;
    a=0;
    tis(0, 0);
    for(i=0; i<n; i++)if(veg[i])a++;
    cout << a<<endl;
    for(i=0; i<n; i++)if(veg[i])cout << i+1 << ' ';
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base36/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/02ms512 KiB
3Részben helyes2/41ms316 KiB
4Elfogadva4/41ms508 KiB
5Elfogadva4/42ms316 KiB
6Elfogadva4/42ms316 KiB
7Elfogadva4/445ms2700 KiB
8Elfogadva6/652ms3300 KiB
9Elfogadva6/661ms3592 KiB
10Elfogadva6/671ms4068 KiB
11Hibás válasz0/690ms4464 KiB
12Hibás válasz0/6101ms4892 KiB