Submission #1200078

#TimeUsernameProblemLanguageResultExecution timeMemory
1200078timasdfadsfadsfRace (IOI11_race)C++20
Compilation error
0 ms0 KiB
// time-limit: 3000 #include <bits/stdc++.h> #include <cstdio> using namespace std; void setIO(string File_name) { cin.tie(0)->sync_with_stdio(0); if (File_name.size()) { freopen((File_name + ".in").c_str(), "r", stdin); freopen((File_name + ".out").c_str(), "w", stdout); } } class CD { private: vector<vector<pair<int, long long>>> tree; vector<int> par; vector<int> sub; vector<bool> rem; map<long long, int> mp; int ans = -1; int k; int dfs(int u, int p) { sub[u] = 1; for (auto [v, w] : tree[u]) { if (!rem[v] && v != p) { sub[u] += dfs(v, u); } } return sub[u]; } int dfs(int u, int p, int n) { for (auto [v, w] : tree[u]) { if (!rem[v] && v != p && sub[v] > n / 2) { return dfs(v, u, n); } } return u; } void process(int u, int p, int depth, long long sum, bool filling) { if (filling) { if (mp.find(sum) == mp.end()) { mp[sum] = depth; } else { mp[sum] = min(mp[sum], depth); } } else { int need = k - sum; if (need >= 0) { if (mp.find(need) != mp.end()) { if (ans == -1) { ans = depth + mp[need]; } else if (depth + mp[need] < ans) { ans = depth + mp[need]; } } } } for (auto [v, w] : tree[u]) { if (v != p && !rem[v]) { process(v, u, depth + 1, sum + w, filling); } } } void build(int u, int p) { int n = dfs(u, p); int c = dfs(u, p, c); par[c] = p; rem[c] = true; mp.clear(); mp[0] = 0; for (auto [v, w] : tree[c]) { if (!rem[v]) { process(v, c, 1, w, 0); process(v, c, 1, w, 1); } } for (auto [v, w] : tree[c]) { if (!rem[v]) { build(v, u); } } } public: CD(const vector<vector<pair<int, long long>>>& t, int k_) { int n = t.size(); sub.resize(n); rem.resize(n); par.resize(n); tree = t; k = k_; build(0, -1); } void solve() { cout << ans << endl; } }; struct edge { int u, v, w; }; void Solve() { int n, k; cin >> n >> k; vector<edge> E(n - 1); for (int i = 0; i < n - 1; i++) { int u, v; cin >> u >> v; E[i] = {u, v, -1}; } for (int i = 0; i < n - 1; i++) { int l; cin >> l; E[i].w = l; } vector<vector<pair<int, long long>>> t(n); for (auto e : E) { t[e.u].push_back({e.v, e.w}); t[e.v].push_back({e.u, e.w}); } CD g(t, k); g.solve(); } int main() { setIO(""); size_t t = 1; //cin >> t; while (t--) { Solve(); } return 0; }

Compilation message (stderr)

race.cpp: In function 'void setIO(std::string)':
race.cpp:10:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |         freopen((File_name + ".in").c_str(), "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
race.cpp:11:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 |         freopen((File_name + ".out").c_str(), "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/ccTqjYOH.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccAzmv8d.o:race.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccTqjYOH.o: in function `main':
grader.cpp:(.text.startup+0x28): undefined reference to `best_path(int, int, int (*) [2], int*)'
collect2: error: ld returned 1 exit status