Submission #1293789

#TimeUsernameProblemLanguageResultExecution timeMemory
1293789darkdevilvaqifPaprike (COI18_paprike)C++20
Compilation error
0 ms0 KiB
#pragma GCC optimize("O3") #pragma GCC optimize ("unroll-loops") // #pragma GCC target("avx2") #include <bits/stdc++.h> #define ll long long #define ull unsigned ll #define ld long double #define all(v, l) v.begin() + l, v.end() #define rall(v, l) v.rbegin(), v.rend() - l #define pb push_back #define pf push_front #define rsz resize #define fi first #define se second #define LMAX LLONG_MAX #define LMIN LLONG_MIN #define IMAX INT_MAX #define IMIN INT_MIN #define endl "\n" #define newline cout << endl; using namespace std; // structs struct graph { vector <vector <int> > g; vector <ll> lvl; void prep(int n) { g.rsz(n); lvl.rsz(n); } ll limit; int cnt; void DFS(int v, int par) { vector <ll> choices; for (auto u : g[v]) { if (par == u) { continue; } DFS(u, v); choices.pb(lvl[u]); } sort(all(choices, 0)); int sz = (int)choices.size(); for (int i = 0; i < sz; i++) { if (lvl[v] + lvl[u] > limit) { cnt += sz - i; break; } else { lvl[v] += lvl[u]; } } } void cleanse() { cnt = 0; } }; // globals // variables int n; ll k; // iterators int i; // notes /* -stuff you should look for- * int overflow, array bounds * special cases (n=1?) * do something instead of nothing and stay organized * WRITE STUFF DOWN * DON'T GET STUCK ON ONE APPROACH continue - skip the rest in the loop */ // functions ll GCD(ll numeroune, ll numerodeux); ll LCM(ll numeroune, ll numerodeux); ll power(ll numeroune, ll numerodeux); void solve() { graph G; cin >> n >> k; G.prep(n + 1); for (i = 1; i <= n; i++) { cin >> G.lvl[i]; } for (i = 1; i < n; i++) { int u, v; cin >> u >> v; G.g[u].pb(v); G.g[v].pb(u); } G.cleanse(); G.limit = k; G.DFS(1, -1); cout << G.cnt; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int t = 1; // cin >> t; while (t--) { solve(); newline } } ll GCD(ll numeroune, ll numerodeux) { if (!numeroune) { return numerodeux; } return GCD(numerodeux % numeroune, numeroune); } ll LCM(ll numeroune, ll numerodeux) { return numeroune * numerodeux / GCD(numeroune, numerodeux); } ll power(ll numeroune, ll numerodeux) { ll res = 1; while (numerodeux) { if (numerodeux & 1) { res *= numeroune; } numeroune *= numeroune; numerodeux >>= 1; } return res; } /* $$$$$$$$\ $$$$$$$$\ $$ _____|\____$$ | $$ | $$ / $$$$$\ $$ / $$ __| $$ / $$ | $$ / $$$$$$$$\ $$$$$$$$\ \________|\________| */

Compilation message (stderr)

paprike.cpp: In member function 'void graph::DFS(int, int)':
paprike.cpp:55:30: error: 'u' was not declared in this scope
   55 |             if (lvl[v] + lvl[u] > limit)
      |                              ^