이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
#define int long long
int ans, k;
int f[100005] = {};
int dfs(vector<vector<int>> &m, vector<int> &w, int p){
int sum = w[p];
vector<int> down;
for (int i : m[p]){
if (i != f[p]){
f[i] = p;
down.emplace_back(dfs(m, w, i));
sum += down.back();
}
}
sort(down.begin(), down.end());
for (int i = down.size() - 1; sum > k; --i){
sum -= down[i];
++ans;
}
// cout << p << ' ' << sum << '\n';
return sum;
}
main(){
cin.tie(0);
ios::sync_with_stdio(false);
int n;
cin >> n >> k;
vector<int> w(n + 1);
for (int i = 1; i <= n; ++i) cin >> w[i];
vector<vector<int>> m(n + 1);
for (int i = 0; i < n - 1; ++i){
int a, b;
cin >> a >> b;
m[a].emplace_back(b);
m[b].emplace_back(a);
}
ans = 0;
dfs(m, w, 1);
cout << ans << '\n';
}
컴파일 시 표준 에러 (stderr) 메시지
paprike.cpp:28:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
28 | main(){
| ^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |