9525 | 2024. 02. 22 14:44:30 | Vkrisztian01 | Tevefarm | cpp17 | Hibás válasz 38/50 | 93ms | 12876 KiB |
#include <iostream>
#include<vector>
using namespace std;
int n,a,b;
vector<vector<int> > g;
vector<int>label;
vector<int>dp;
vector<bool>valasztom;
vector<int>ki;
void dfs(int node)
{
int osszeg=0;
for(auto to:g[node])
{
dfs(to);
osszeg+=dp[to];
}
dp[node]=max(label[node],osszeg);
if(label[node]>osszeg) valasztom[node]=true;
else valasztom[node]=false;
}
void bejar(int node)
{
if(valasztom[node])
{
ki.push_back(node);
return;
}
for(auto to:g[node]) bejar(to);
}
int main()
{
cin>>n;
g.resize(n+1);
dp.assign(n+1,0);
valasztom.resize(n+1);
label.resize(n+1);
for(int i=1;i<=n;i++) cin>>label[i];
for(int i=2;i<=n;i++)
{
cin>>a;
g[a].push_back(i);
}
dfs(1);
cout<<dp[1]<<endl;
bejar(1);
cout<<ki.size()<<endl;
for(auto x:ki) cout<<x<<" ";
return 0;
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 38/50 | ||||||
1 | Elfogadva | 0/0 | 3ms | 1876 KiB | |||
2 | Elfogadva | 0/0 | 3ms | 2304 KiB | |||
3 | Elfogadva | 4/4 | 3ms | 2576 KiB | |||
4 | Elfogadva | 4/4 | 3ms | 2632 KiB | |||
5 | Elfogadva | 4/4 | 3ms | 2760 KiB | |||
6 | Elfogadva | 4/4 | 3ms | 3104 KiB | |||
7 | Elfogadva | 4/4 | 43ms | 8108 KiB | |||
8 | Elfogadva | 6/6 | 50ms | 9220 KiB | |||
9 | Elfogadva | 6/6 | 61ms | 10572 KiB | |||
10 | Elfogadva | 6/6 | 74ms | 11592 KiB | |||
11 | Hibás válasz | 0/6 | 83ms | 11872 KiB | |||
12 | Hibás válasz | 0/6 | 93ms | 12876 KiB |