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/resolver.py", line 290, in resolve
    bundled_code = language.bundle(path, basedir=basedir)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj/languages/cplusplus.py", line 243, in bundle
    bundler.update(path)
  File "/home/runner/.local/lib/python3.12/site-packages/competitive_verifier/oj/languages/cplusplus_bundle.py", line 322, in update
    assert len(lines) == len(uncommented_lines)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError

Test cases

Env Name Status Elapsed Memory
g++ example_00 :heavy_check_mark: AC 3 ms 3 MB
g++ example_01 :heavy_check_mark: AC 2 ms 4 MB
g++ example_02 :heavy_check_mark: AC 2 ms 4 MB
g++ example_03 :heavy_check_mark: AC 2 ms 3 MB
g++ max_random_00 :heavy_check_mark: AC 404 ms 4 MB
g++ max_random_01 :heavy_check_mark: AC 401 ms 4 MB
g++ max_random_02 :heavy_check_mark: AC 397 ms 4 MB
g++ max_random_03 :heavy_check_mark: AC 388 ms 4 MB
g++ max_random_04 :heavy_check_mark: AC 383 ms 4 MB
g++ random_00 :heavy_check_mark: AC 76 ms 4 MB
g++ random_01 :heavy_check_mark: AC 13 ms 3 MB
g++ random_02 :heavy_check_mark: AC 5 ms 4 MB
g++ random_03 :heavy_check_mark: AC 176 ms 4 MB
g++ random_04 :heavy_check_mark: AC 49 ms 4 MB
g++ small_00 :heavy_check_mark: AC 76 ms 4 MB
g++ small_01 :heavy_check_mark: AC 13 ms 4 MB
g++ small_02 :heavy_check_mark: AC 5 ms 3 MB
g++ small_03 :heavy_check_mark: AC 12 ms 4 MB
g++ small_04 :heavy_check_mark: AC 49 ms 4 MB
g++ small_c01_00 :heavy_check_mark: AC 53 ms 4 MB
g++ small_c01_01 :heavy_check_mark: AC 5 ms 3 MB
g++ small_c01_02 :heavy_check_mark: AC 3 ms 4 MB
g++ small_c01_03 :heavy_check_mark: AC 6 ms 4 MB
g++ small_c01_04 :heavy_check_mark: AC 31 ms 4 MB
g++ star_00 :heavy_check_mark: AC 321 ms 4 MB
Back to top page