Submission #1222060

#TimeUsernameProblemLanguageResultExecution timeMemory
1222060monaxiaDreaming (IOI13_dreaming)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #include <ext/random> #include <ext/pb_ds/assoc_container.hpp> #pragma GCC optimize("O3,unroll-loops") #pragma GCC optimize ("Ofast") #define pb push_back #define ppb pop_back #define fr first #define sc second #define all(v) v.begin(), v.end() #define all1(v) v.begin() + 1, v.begin() + n + 1 using namespace std; using namespace __gnu_pbds; using ll = long long; using ull = unsigned long long; using ld = long double; constexpr uint64_t Mod = 1e9 + 7; constexpr ld eps = 1e-9; constexpr int sqr = 447; int n = 2e5; ll ans = 0; vector <ll> val(n + 1); vector <vector <pair <int ,int>>> graph(n + 1); vector <vector <int>> p(n + 5, vector <int> (40, -1)); vector <int> h(n + 1, 0), v(n + 1, 0); void dfs1111(int node, int pr){ h[node] = h[pr] + 1; p[node][0] = pr; for(auto& x : graph[node]){ if(x.fr == pr) continue; dfs1111(x.fr, node); } } void preprocess(){ dfs1111(1, 0); for(int j = 1; 1 << j <= n; j ++){ for(int i = 1; i <= n; i ++){ if(p[i][j - 1] != -1) p[i][j] = p[p[i][j - 1]][j - 1]; } } } int lca(int u, int v){ if(h[u] < h[v]) swap(u, v); while(h[u] > h[v]){ u = p[u][__lg(h[u] - h[v])]; } if(u == v) return u; for(int i = __lg(n); i >= 1; i --){ if(p[u][i] != p[v][i]){ u = p[u][i]; v = p[v][i]; } } while(u != v){ u = p[u][0]; v = p[v][0]; } return u; } vector <gp_hash_table <int, ll>> cnt(n + 1), total(n + 1); vector <multiset <ll>> value(n + 1); ll mn = LLONG_MAX, mx = LLONG_MIN; void dfs1(int node, int p){ v[node] = 1; for(auto& x : graph[node]){ if(x.fr == p) continue; dfs1(x.fr, node); total[node][x.fr] += total[x.fr][x.fr]; total[node][node] = max(total[node][node], total[x.fr][x.fr] + cnt[x.fr][x.fr] * x.sc); value[node].insert(total[x.fr][x.fr] + cnt[x.fr][x.fr] * x.sc); } } void dfs(int node, int p, int d){ if(p){ auto w = value[p].rbegin(); if(cnt[node][node] * d + total[node][node] == total[p][p]) w ++; total[node][node] = max(total[node][node], *w + d); value[node].insert(*w + d); // cout << node << ' ' << *w << " " << d << "\n"; // cout << node << " " << p << " " << cnt[p][p] - cnt[p][node] << " " << (cnt[p][p] - cnt[p][node]) * d << "\n"; } auto test = value[node].end(); test ++; mn = min(mn, total[node][node]); for(auto& x : graph[node]){ if(x.fr == p) continue; dfs(x.fr, node, x.sc); } } void solve(){ ll n, m, l; cin >> n >> m >> l; for(int i = 1; i <= m; i ++){ int u, v, d; cin >> u >> v >> d; u ++; v ++; // cout << u << ' ' << v << " " << d << "\n"; graph[u].pb({v, d}); graph[v].pb({u, d}); } for(int i = 1; i <= n; i ++) cnt[i][i] = 1, value[i].insert(0); vector <ll> ans; for(int i = 1; i <= n; i ++){ if(v[i]) continue; dfs1(i, 0); dfs(i, 0, 0); ans.pb(mn); // for(int j = 1; j <= n; j ++) cout << v[j] << ' '; cout << "\n"; // cout << mn << '\n'; mn = LLONG_MAX; // cout << "\n"; } // for(int i = 1; i <= n; i ++){ // for(int j = 1; j <= n; j ++) cout << total[i][j] << ' '; cout << '\n'; // } cout << "\n"; // for(int i = 1; i <= n; i ++){ // for(int j = 1; j <= n; j ++) cout << cnt[i][j] << ' '; cout << '\n'; // } sort(all(ans), greater <> ()); for(int i = 1; i < ans.size(); i ++) ans[i] += l; sort(all(ans), greater <> ()); // for(auto& x : ans) cout << x << ' '; if(ans.size() > 1) cout << ans[0] + ans[1]; else cout << ans[0]; } signed main() { cin.tie(0)->sync_with_stdio(0); ll n = 1; // cin >> n; while(n) { solve(); n --; cout << "\n"; } cerr << "t elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n"; }

Compilation message (stderr)

/usr/bin/ld: /tmp/ccy0uElY.o: in function `main':
grader.c:(.text.startup+0x0): multiple definition of `main'; /tmp/ccs7FAnt.o:dreaming.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccy0uElY.o: in function `main':
grader.c:(.text.startup+0xc4): undefined reference to `travelTime'
collect2: error: ld returned 1 exit status