8924 2024. 02. 05 15:06:34 Balki22 Tevefarm cpp17 Hibás válasz 21/50 50ms 21876 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
	ios::sync_with_stdio(false); cin.tie(0);
	int n; cin >> n;
	vector<int> t(n);
	vector<vector<int>> e(n, vector<int>(0));
	vector<int> parent(n);
	for (int i = 0; i < n; i++) cin >> t[i];
	for (int i = 1; i < n; i++) {
		int u; cin >> u; u--;
		e[u].push_back(i);
		e[i].push_back(u);
		parent[i] = u;
	}
	vector<short> chosen(n, 0);
	for (int i = n - 1; i >= 0; i--) {
		int sum = 0;
		for (int s : e[i]) {
			if (s != parent[i]) sum += t[s];
		}

		if (sum > t[i]) {
			chosen[i] = 1;
			for (int s : e[i]) {
				if (s != parent[i] && chosen[s] != 1) chosen[s] = 2;
			}
			t[i] = sum;
		}
		else {
			chosen[i] = 2;
			for (int s : e[i]) {
				if (s != parent[i]) chosen[s] = 1;
			}
		}
	}
	cout << t[0] << '\n';
	int count = 0;
	for (int isin : chosen) if (isin == 2) count++;
	cout << count << '\n';
	for (int i = 0; i < n; i++) if (chosen[i] == 2) cout << i+1 << ' ';
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 21/50
1 Elfogadva 0/0 3ms 1828 KiB
2 Hibás válasz 0/0 3ms 2252 KiB
3 Részben helyes 2/4 3ms 2556 KiB
4 Részben helyes 2/4 3ms 2488 KiB
5 Elfogadva 4/4 3ms 2860 KiB
6 Részben helyes 2/4 3ms 2844 KiB
7 Részben helyes 2/4 24ms 10212 KiB
8 Részben helyes 3/6 28ms 12256 KiB
9 Részben helyes 3/6 32ms 14368 KiB
10 Részben helyes 3/6 37ms 16408 KiB
11 Hibás válasz 0/6 46ms 19180 KiB
12 Hibás válasz 0/6 50ms 21876 KiB