Submission #1281617

#TimeUsernameProblemLanguageResultExecution timeMemory
1281617duckindogReconstruction Project (JOI22_reconstruction)C++20
100 / 100
644 ms40488 KiB
#include <bits/stdc++.h> using namespace std; const int N = 100'000 + 10; int n, m, q; struct Edge { int u, v, w; friend istream& operator >> (istream& is, Edge& rhs) { return is >> rhs.u >> rhs.v >> rhs.w; } } edge[N]; namespace DSU { int id[510]; static inline void init() { memset(id, -1, sizeof id); } static int root(int u) { return id[u] < 0 ? u : id[u] = root(id[u]); } static void join(int u, int v) { u = root(u); v = root(v); if (id[u] > id[v]) swap(u, v); if (u == v) return; id[u] += id[v]; id[v] = u; } static inline bool isConnect(int u, int v) { return root(u) == root(v); } } int L[N], R[N]; int32_t main() { cin.tie(0)->sync_with_stdio(0); cin >> n >> m; for (int i = 1; i <= m; ++i) cin >> edge[i]; sort(edge + 1, edge + m + 1, [](const auto& i, const auto& j) { return i.w < j.w; }); fill(R + 1, R + m + 1, 1'000'000'010); for (int i = 1; i <= m; ++i) { DSU::init(); for (int j = i - 1; j >= 1; --j) { DSU::join(edge[j].u, edge[j].v); if (DSU::isConnect(edge[i].u, edge[i].v)) { R[j] = L[i] = (edge[j].w + edge[i].w + 1) / 2; break; } } } map<int, long long> lt, rt; for (int i = 1; i <= m; ++i) { lt[L[i]] -= 1; lt[edge[i].w] += 2; lt[R[i]] -= 1; rt[L[i]] += edge[i].w; rt[edge[i].w] -= 2 * edge[i].w; rt[R[i]] += edge[i].w; } int cnt = 0; long long sum = 0; auto itL = lt.begin(), itR = rt.begin(); cin >> q; while (q--) { int x; cin >> x; for (; itL != lt.end() && itL->first <= x; ++itL, ++itR) { cnt += itL->second; sum += itR->second; } cout << 1ll * x * cnt + sum << "\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...