graph/internal/concepts.hpp
- View this file on GitHub
- Last update: 2025-05-22 23:07:46+09:00
- Include:
#include "graph/internal/concepts.hpp"
Required by
graph/centroid_decomposition.hpp
graph/connected_components.hpp
graph/internal/01bfs.hpp
graph/internal/bfs.hpp
graph/internal/dijkstra.hpp
graph/is_bipartite.hpp
graph/lowest_common_ancestor.hpp
graph/manhattan_minimum_spanning_tree.hpp
graph/minimum_paph_cover.hpp
graph/parse_grid.hpp
graph/reachability_test.hpp
graph/shortest_path.hpp
graph/spanning_tree.hpp
graph/topological_sort.hpp
graph/tree_diamiter.hpp
graph/tree_hash.hpp
include/all.hpp
include/graph_theory.hpp
include/template.hpp
structure/graph.hpp
template/standard.hpp
template/using.hpp
Verified with
verify/aizu-online-judge/grl_1_a/0000.test.cpp
verify/aizu-online-judge/itp1_1_a/0000.test.cpp
verify/aizu-online-judge/itp1_1_a/0001.test.cpp
verify/yosupo-judge/lca/0000.test.cpp
verify/yosupo-judge/lca/0001.test.cpp
verify/yosupo-judge/manhattanmst/0000.test.cpp
verify/yosupo-judge/shortest_path/0000.test.cpp
verify/yosupo-judge/shortest_path/0001.test.cpp
verify/yosupo-judge/shortest_path/0002.test.cpp
Code
#pragma once
#include <ranges>
#include <concepts>
namespace uni {
namespace internal {
template<class Range, class Graph>
concept topological_sortable_with =
std::same_as<std::ranges::range_value_t<Range>, typename Graph::node_type> &&
requires (Range *const r, typename Graph::node_type v) {
r->clear();
r->push_back(v);
std::ranges::ssize(*r);
};
}
}
#line 2 "graph/internal/concepts.hpp"
#include <ranges>
#include <concepts>
namespace uni {
namespace internal {
template<class Range, class Graph>
concept topological_sortable_with =
std::same_as<std::ranges::range_value_t<Range>, typename Graph::node_type> &&
requires (Range *const r, typename Graph::node_type v) {
r->clear();
r->push_back(v);
std::ranges::ssize(*r);
};
}
}