93982024-02-21 12:46:17csaron71Tevefarmcpp17Hibás válasz 19/5097ms12324 KiB
#include <bits/stdc++.h>
using namespace std;

vector<int> ertek;
vector<int> apa;
vector<vector<int> > gyerekek;

int kereses(int x) {
	if (gyerekek[x].size()>0) {
		int epp=ertek[x];
		int masik=0;
		for (int sz : gyerekek[x]) {
			masik+=kereses(sz);
		}
		return max(epp, masik);
	}
	else {
		return ertek[x];
	}
	
}

int main() {
	int n;
	cin >> n;
	ertek.resize(n);
	for (int i=0; i<n; i++) {
		cin >> ertek[i];
	}
	apa.resize(n);
	apa[0]=0;
	gyerekek.assign(n, vector<int>());
	for (int i=1; i<n; i++) {
		cin >> apa[i];
		apa[i]--;
		gyerekek[apa[i]].push_back(i);
	}

	cout << kereses(0);
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base19/50
1Hibás válasz0/03ms1812 KiB
2Hibás válasz0/03ms2176 KiB
3Részben helyes2/43ms2212 KiB
4Részben helyes2/43ms2456 KiB
5Részben helyes2/43ms2520 KiB
6Részben helyes2/43ms2564 KiB
7Részben helyes2/439ms7240 KiB
8Részben helyes3/648ms8236 KiB
9Részben helyes3/656ms9400 KiB
10Részben helyes3/665ms10524 KiB
11Hibás válasz0/687ms11272 KiB
12Hibás válasz0/697ms12324 KiB