algo

This documentation is automatically generated by competitive-verifier/competitive-verifier

View the Project on GitHub kuhaku-space/algo

:heavy_check_mark: test/aoj/challenge/2559.2.test.cpp

Depends on

Code

// competitive-verifier: PROBLEM https://onlinejudge.u-aizu.ac.jp/problems/2559
#include <algorithm>
#include <cstdint>
#include <functional>
#include <iostream>
#include <numeric>
#include <tuple>
#include <utility>
#include <vector>
#include "graph/graph.hpp"
#include "heap/leftist_heap.hpp"
#include "tree/union_find.hpp"

int main(void) {
    int n, m;
    std::cin >> n >> m;
    std::vector<std::tuple<int, int, int>> edges(m);
    for (auto &[u, v, w] : edges) std::cin >> u >> v >> w, --u, --v;
    std::vector<int> ord(m);
    std::iota(ord.begin(), ord.end(), 0);
    std::sort(ord.begin(), ord.end(),
              [&](int x, int y) { return std::get<2>(edges[x]) < std::get<2>(edges[y]); });
    std::int64_t sum = 0;
    union_find uf(n);
    std::vector<leftist_heap<std::pair<int, int>, std::greater<>>> heap(n);
    Graph<int> g(n);
    std::vector<bool> used(m);
    for (auto x : ord) {
        auto [u, v, w] = edges[x];
        if (uf.same(u, v)) {
            heap[u].emplace(w, v);
            heap[v].emplace(w, u);
        } else {
            sum += w;
            uf.unite(u, v);
            g.add_edges(u, v, x);
            used[x] = true;
        }
    }
    if (uf.size(0) != n) {
        for (int i = 0; i < m; ++i) std::cout << -1 << '\n';
        return 0;
    }
    std::vector<std::int64_t> ans(m, -1);
    for (int i = 0; i < m; ++i) {
        if (!used[i]) ans[i] = sum;
    }
    uf = union_find(n);
    auto dfs = [&](auto self, int x, int p) -> void {
        for (auto e : g[x]) {
            if (e.to() == p) continue;
            self(self, e.to(), x);
            while (!heap[e.to()].empty() && uf.same(e.to(), heap[e.to()].top().second))
                heap[e.to()].pop();
            if (!heap[e.to()].empty()) {
                auto [u, v, w] = edges[e.weight()];
                ans[e.weight()] = sum - w + heap[e.to()].top().first;
            }
            heap[x].meld(heap[e.to()]);
            uf.unite(x, e.to());
        }
    };
    dfs(dfs, 0, -1);
    for (int i = 0; i < m; ++i) std::cout << ans[i] << '\n';

    return 0;
}
Traceback (most recent call last):
  File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj/resolver.py", line 291, in resolve
    bundled_code = language.bundle(path, basedir=basedir)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj/verify/languages/cplusplus.py", line 242, in bundle
    bundler.update(path)
  File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj/verify/languages/cplusplus_bundle.py", line 479, in update
    self._resolve(pathlib.Path(included), included_from=path)
  File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj/verify/languages/cplusplus_bundle.py", line 286, in _resolve
    raise BundleErrorAt(path, -1, "no such header")
competitive_verifier.oj.verify.languages.cplusplus_bundle.BundleErrorAt: graph/graph.hpp: line -1: no such header

Test cases

Env Name Status Elapsed Memory
g++ 00_sample_00 :heavy_check_mark: AC 3 ms 4 MB
g++ 00_sample_01 :heavy_check_mark: AC 2 ms 3 MB
g++ 00_sample_02 :heavy_check_mark: AC 2 ms 3 MB
g++ 00_sample_03 :heavy_check_mark: AC 2 ms 3 MB
g++ 10_random_0_00 :heavy_check_mark: AC 2 ms 4 MB
g++ 10_random_0_01 :heavy_check_mark: AC 2 ms 3 MB
g++ 10_random_0_02 :heavy_check_mark: AC 2 ms 4 MB
g++ 10_random_0_03 :heavy_check_mark: AC 2 ms 4 MB
g++ 10_random_0_04 :heavy_check_mark: AC 2 ms 3 MB
g++ 10_random_0_05 :heavy_check_mark: AC 2 ms 4 MB
g++ 10_random_0_06 :heavy_check_mark: AC 2 ms 4 MB
g++ 10_random_0_07 :heavy_check_mark: AC 2 ms 3 MB
g++ 10_random_0_08 :heavy_check_mark: AC 2 ms 3 MB
g++ 10_random_0_09 :heavy_check_mark: AC 2 ms 4 MB
g++ 10_random_1_00 :heavy_check_mark: AC 4 ms 4 MB
g++ 10_random_1_01 :heavy_check_mark: AC 5 ms 4 MB
g++ 10_random_1_02 :heavy_check_mark: AC 2 ms 3 MB
g++ 10_random_1_03 :heavy_check_mark: AC 4 ms 4 MB
g++ 10_random_1_04 :heavy_check_mark: AC 4 ms 4 MB
g++ 10_random_1_05 :heavy_check_mark: AC 3 ms 4 MB
g++ 10_random_1_06 :heavy_check_mark: AC 3 ms 4 MB
g++ 10_random_1_07 :heavy_check_mark: AC 3 ms 4 MB
g++ 10_random_1_08 :heavy_check_mark: AC 9 ms 4 MB
g++ 10_random_1_09 :heavy_check_mark: AC 8 ms 4 MB
g++ 10_random_2_00 :heavy_check_mark: AC 237 ms 25 MB
g++ 10_random_2_01 :heavy_check_mark: AC 189 ms 23 MB
g++ 10_random_2_02 :heavy_check_mark: AC 220 ms 25 MB
g++ 20_minimum :heavy_check_mark: AC 3 ms 4 MB
g++ 30_corner_00 :heavy_check_mark: AC 2 ms 4 MB
g++ 30_star :heavy_check_mark: AC 13 ms 5 MB
g++ 31_perfect :heavy_check_mark: AC 40 ms 8 MB
g++ 32_zero :heavy_check_mark: AC 3 ms 4 MB
g++ 33_ring :heavy_check_mark: AC 7 ms 5 MB
g++ 40_isolated :heavy_check_mark: AC 2 ms 3 MB
g++ 41_tree :heavy_check_mark: AC 4 ms 4 MB
g++ 90_antidfs :heavy_check_mark: AC 148 ms 47 MB
g++ 91_antiRecHeap :heavy_check_mark: AC 194 ms 46 MB
Back to top page