CP-Algorithms Library

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

View the Project on GitHub cp-algorithms/cp-algorithms-aux

:heavy_check_mark: Minimum Diameter Spanning Tree (verify/graph/minimum_diameter_spanning_tree.test.cpp)

Depends on

Code

// @brief Minimum Diameter Spanning Tree
#define PROBLEM "https://judge.yosupo.jp/problem/minimum_diameter_spanning_tree"
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")
#include <iostream>
//#include "blazingio/blazingio.min.hpp"
#include "cp-algo/graph/shortest_path.hpp"
#include "cp-algo/tree/diameter.hpp"
#include <bits/stdc++.h>

using namespace std;
using namespace cp_algo::graph;

template<weighted_undirected_graph_type graph>
auto minimum_diameter_spanning_tree(graph const& g) {
    int64_t min_diameter = shortest_path_context::inf;
    cp_algo::big_vector<edge_index> best_edges;
    for(auto v: g.nodes()) {
        auto [_, p] = dijkstra(g, v);
        auto d = tree_diameter(g, &p);
        if (d < min_diameter) {
            min_diameter = d;
            best_edges = p;
        }
    }
    return std::pair{min_diameter, best_edges};
}

void solve() {
    int n, m;
    cin >> n >> m;
    weighted_graph g(n);
    g.read_edges(m);
    auto [X, E] = minimum_diameter_spanning_tree(g);
    cout << X << '\n';
    for(auto e: E) {
        if (e != -1) {
            cout << e << " ";
        }
    }
    cout << "\n";
}

signed main() {
    //freopen("input.txt", "r", stdin);
    ios::sync_with_stdio(0);
    cin.tie(0);
    int t = 1;
    //cin >> t;
    while(t--) {
        solve();
    }
}
Traceback (most recent call last):
  File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj_resolve/resolver.py", line 181, 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 252, in bundle
    bundler.update(path)
  File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj/verify/languages/cplusplus_bundle.py", line 327, in update
    assert len(lines) == len(uncommented_lines)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError

Test cases

Env Name Status Elapsed Memory
g++ example_00 :heavy_check_mark: AC 5 ms 4 MB
g++ example_01 :heavy_check_mark: AC 4 ms 4 MB
g++ example_02 :heavy_check_mark: AC 4 ms 4 MB
g++ example_03 :heavy_check_mark: AC 4 ms 4 MB
g++ max_random_00 :heavy_check_mark: AC 407 ms 4 MB
g++ max_random_01 :heavy_check_mark: AC 404 ms 4 MB
g++ max_random_02 :heavy_check_mark: AC 402 ms 4 MB
g++ max_random_03 :heavy_check_mark: AC 391 ms 4 MB
g++ max_random_04 :heavy_check_mark: AC 386 ms 4 MB
g++ random_00 :heavy_check_mark: AC 79 ms 4 MB
g++ random_01 :heavy_check_mark: AC 15 ms 4 MB
g++ random_02 :heavy_check_mark: AC 8 ms 4 MB
g++ random_03 :heavy_check_mark: AC 178 ms 4 MB
g++ random_04 :heavy_check_mark: AC 52 ms 4 MB
g++ small_00 :heavy_check_mark: AC 78 ms 4 MB
g++ small_01 :heavy_check_mark: AC 15 ms 4 MB
g++ small_02 :heavy_check_mark: AC 8 ms 4 MB
g++ small_03 :heavy_check_mark: AC 14 ms 4 MB
g++ small_04 :heavy_check_mark: AC 51 ms 4 MB
g++ small_c01_00 :heavy_check_mark: AC 56 ms 4 MB
g++ small_c01_01 :heavy_check_mark: AC 8 ms 4 MB
g++ small_c01_02 :heavy_check_mark: AC 5 ms 4 MB
g++ small_c01_03 :heavy_check_mark: AC 8 ms 4 MB
g++ small_c01_04 :heavy_check_mark: AC 33 ms 4 MB
g++ star_00 :heavy_check_mark: AC 322 ms 4 MB
Back to top page