151522025-02-14 10:25:18ercseferencTevefarmcpp17Hibás válasz 23/50100ms6492 KiB
#include <bits/stdc++.h>
using namespace std;
struct var{vector<int>bem; int kim,ert,val=0; bool van=0,valid=0;};
int main()
{
    //ifstream f("szamok.txt");
    int n,x; cin>>n; vector<var>a(n+1);
    for(int i=1; i<=n; i++)cin>>a[i].ert;
    bool b[n+1]={};
    for(int i=2; i<=n; i++)
        {cin>>x; a[i].kim=x; b[x]=1; a[x].bem.push_back(i);}
    bool nincs=0;
    vector<int>l1,l2;
    for(int i=1; i<=n; i++)
        {if(!b[i])l1.push_back(i);}
    while(!nincs){
        for(int i=0; i<l1.size(); i++){
            int s=0;
            for(int j=0; j<a[l1[i]].bem.size(); j++)
                {s+=a[a[l1[i]].bem[j]].val;};
            a[l1[i]].val=max(a[l1[i]].ert,s);
            a[l1[i]].van=0;}
        if(l1.size()==1 && l1[0]==0)nincs=1;
        for(int i=0; i<l1.size(); i++){
            if(a[a[l1[i]].kim].van==0){
                l2.push_back(a[l1[i]].kim);
                a[a[l1[i]].kim].van=1;}}
        if(l2.size()==0)nincs=1;
        l1.clear(); l1=l2; l2.clear();}
    for(int i=1; i<=n; i++){if(a[i].val==a[i].ert)a[i].valid=1;}
    l1.clear(); l2.clear(); l1.push_back(1); nincs=0;
    vector<int>megold;
    while(!nincs){
        for(int i=0; i<l1.size(); i++){
            for(int j=0; j<a[l1[i]].bem.size(); j++){
                if(a[a[l1[i]].bem[j]].valid)megold.push_back(a[l1[i]].bem[j]);
                else l2.push_back(a[l1[i]].bem[j]);}
        if(l2.size()==0)nincs=1;
        l1=l2; l2.clear();}}
    cout<<a[1].val<<endl<<megold.size()<<endl;
    for(int i=0; i<megold.size(); i++){cout<<megold[i]<<" ";}
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base23/50
1Elfogadva0/01ms316 KiB
2Hibás válasz0/02ms316 KiB
3Részben helyes2/41ms316 KiB
4Elfogadva4/41ms316 KiB
5Elfogadva4/41ms316 KiB
6Részben helyes2/42ms316 KiB
7Részben helyes2/439ms3512 KiB
8Részben helyes3/646ms4036 KiB
9Részben helyes3/657ms4692 KiB
10Részben helyes3/664ms5208 KiB
11Hibás válasz0/687ms5844 KiB
12Hibás válasz0/6100ms6492 KiB