(UPD: 2024-12-04 14:48 UTC) Judge is not working due to Cloudflare incident. (URL) We can do nothing about it, sorry. After the incident is resolved, we will grade all submissions.

Submission #210139

#TimeUsernameProblemLanguageResultExecution timeMemory
210139SorahISAPaprike (COI18_paprike)C++17
100 / 100
93 ms18372 KiB
// #pragma GCC target("avx2") #pragma GCC optimize("O3", "unroll-loops") // #include <bits/extc++.h> // using namespace __gnu_pbds; #include <bits/stdc++.h> using namespace std; #define int long long // template <typename T> // using pbds_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; using pii = pair<int, int>; template<typename T> using prior = priority_queue<T, vector<T>, greater<T>>; template<typename T> using Prior = priority_queue<T>; #define X first #define Y second #define fastIO() ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0) #define RANDOM() random_device __rd; \ mt19937 __gen = mt19937(__rd()); \ uniform_int_distribution<int> __dis(0, 1); \ auto rnd = bind(__dis, __gen); const int INF = 1E18; const int mod = 1E9 + 7; const int maxn = 1E5 + 5; vector<int> adj[maxn], spice(maxn); int maxSpice, ans = 0; void dfs(int now, int lst) { // cerr << "dfs: " << now << "\n"; vector<int> tmp; for (auto x : adj[now]) { if (x == lst) continue; dfs(x, now); tmp.push_back(spice[x]); } sort(tmp.begin(), tmp.end()); for (auto x : tmp) { if (spice[now] + x > maxSpice) ++ans; else spice[now] += x; } } int32_t main() { fastIO(); int n, u, v; cin >> n >> maxSpice; for (int i = 1; i <= n; ++i) cin >> spice[i]; for (int i = 0; i < n-1; ++i) { cin >> u >> v; adj[u].push_back(v); adj[v].push_back(u); } dfs(1, -1); 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...