Update README

This commit is contained in:
stefiosif
2022-10-15 11:55:42 +03:00
parent e7fd88f82c
commit 38641ac6f4
2 changed files with 36 additions and 49 deletions

View File

@@ -4,11 +4,12 @@
int main() {
graph::Digraph<std::uint16_t> G;
auto gen = std::bind(std::uniform_real_distribution<>(0, 1),
std::default_random_engine());
std::vector<std::pair<std::uint16_t, std::uint16_t>> dl_set;
std::vector<std::pair<std::uint16_t, std::uint16_t>> qr_set;
std::vector<std::pair<std::uint16_t, std::uint16_t>> in_set;
auto gen = std::bind(std::uniform_real_distribution<>(0, 1),
std::default_random_engine());
for (int i = 0; i <= 100; ++i) {
for (int j = 0; j <= 100; ++j) {
auto rand = gen();
@@ -22,22 +23,20 @@ int main() {
}
}
// Initialize the Roditty and Zwick's dynamic reachability algorithm
// for general directed graphs inspired by Henzinger and King
algo::HenzingerKing<std::uint16_t>* dr = new algo::HenzingerKing(G);
dr->init();
// Remove a random collection of edges from the digraph
dr->remove(dl_set);
// Answer queries using the maintained transitive closure, if the
// queried edge has been deleted, insert it into the digraph again
for (const auto& q : qr_set) {
if (dr->query(q.first, q.second))
for (const auto& [u, v] : qr_set) {
if (dr->query(u, v))
;
else
dr->insert(q.first, q.second);
in_set.push_back({ u, v });
}
for (const auto& [u, v] : in_set)
dr->insert(u, { v });
return 0;
}