Submission #232775

#TimeUsernameProblemLanguageResultExecution timeMemory
232775pedy4000Paprike (COI18_paprike)C++14
24 / 100
67 ms19320 KiB
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;

const int N = 1e5 + 5;
int n, k, ans;
int Arr[N];
vector <int> G[N];

int dfs (int v, int par = 0) {
	vector <int> vec;
	int sum = 0;

	for (int u: G[v])
		if (u != par) {
			vec.push_back(dfs(u, v));
			sum += vec.back();
		}
	sum += Arr[v];
	sort(vec.begin(), vec.end());
	while (k < sum) {
		sum -= vec.back();
		ans++;
		vec.pop_back();
	}
	return sum;
}

int main() {
	ios::sync_with_stdio(false), cin.tie(0);
	cin >> n >> k;
	for (int i = 0; i < n; i++)
		cin >> Arr[i];

	for (int i = 0; i < n - 1; i++) {
		int v, u;
		cin >> v >> u;
		v--, u--;

		G[v].push_back(u);
		G[u].push_back(v);
	}

	dfs(0);
	cout << ans << "\n";
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...