Submission #1271506

#TimeUsernameProblemLanguageResultExecution timeMemory
1271506nexus77Dreaming (IOI13_dreaming)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using pii = pair<int, ll>; ll f(const vector<int>& comp, const vector<vector<pii>>& adj, vector<ll>& diameters, int n) { if (comp.empty()) return 0; int start = comp[0]; // Find farthest node a from start vector<bool> vis(n, false); ll mx_dist = 0; int a = -1; queue<pair<int, ll>> qq; qq.push({start, 0LL}); while (!qq.empty()) { auto [u, d] = qq.front(); qq.pop(); if (vis[u]) continue; vis[u] = true; if (d > mx_dist) { mx_dist = d; a = u; } for (auto [v, w] : adj[u]) { if (!vis[v]) { qq.push({v, d + w}); } } } // From a, compute d1 and find b vector<ll> d1(n, -1LL); vector<bool> vis2(n, false); queue<pair<int, ll>> q2; q2.push({a, 0LL}); ll mx2 = 0; int b = -1; while (!q2.empty()) { auto [u, d] = q2.front(); q2.pop(); if (vis2[u]) continue; vis2[u] = true; d1[u] = d; if (d > mx2) { mx2 = d; b = u; } for (auto [v, w] : adj[u]) { if (!vis2[v]) { q2.push({v, d + w}); } } } // From b, compute d2 vector<ll> d2(n, -1LL); vector<bool> vis3(n, false); queue<pair<int, ll>> q3; q3.push({b, 0LL}); while (!q3.empty()) { auto [u, d] = q3.front(); q3.pop(); if (vis3[u]) continue; vis3[u] = true; d2[u] = d; for (auto [v, w] : adj[u]) { if (!vis3[v]) { q3.push({v, d + w}); } } } diameters.push_back(d1[b]); ll ans = LLONG_MAX; for (int i : comp) { if (d1[i] != -1 && d2[i] != -1) { ans = min(ans, max(d1[i], d2[i])); } } return ans; } int main() { int n, m; ll x; cin >> n >> m >> x; vector<vector<pii>> adj(n); for (int i = 0; i < m; i++) { int l, r; ll w; cin >> l >> r >> w; adj[l].push_back({r, w}); adj[r].push_back({l, w}); } vector<ll> group_ans, diameters; vector<bool> visited(n, false); for (int i = 0; i < n; i++) { if (visited[i]) continue; vector<int> group; queue<int> qq; qq.push(i); visited[i] = true; while (!qq.empty()) { int u = qq.front(); qq.pop(); group.push_back(u); for (auto [v, w] : adj[u]) { if (!visited[v]) { visited[v] = true; qq.push(v); } } } group_ans.push_back(f(group, adj, diameters, n)); } sort(group_ans.rbegin(), group_ans.rend()); ll res = 0; size_t k = group_ans.size(); if (k >= 1) res = max(res, group_ans[0]); if (k >= 2) res = max(res, group_ans[0] + group_ans[1] + x); if (k >= 3) res = max(res, group_ans[1] + group_ans[2] + 2 * x); for (auto d : diameters) { res = max(res, d); } cout << res << endl; return 0; }

Compilation message (stderr)

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