42 lines
997 B
C++
42 lines
997 B
C++
#include "roditty_zwick.h"
|
|
|
|
#include <random>
|
|
|
|
int main() {
|
|
graph::Digraph<std::uint16_t> G;
|
|
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();
|
|
if (rand < 0.5) {
|
|
G.insert(i, j);
|
|
if (rand < 0.25)
|
|
dl_set.push_back({ i, j });
|
|
if (rand < 0.125)
|
|
qr_set.push_back({ i, j });
|
|
}
|
|
}
|
|
}
|
|
|
|
algo::HenzingerKing<std::uint16_t>* dr = new algo::HenzingerKing(G);
|
|
dr->init();
|
|
|
|
dr->remove(dl_set);
|
|
|
|
for (const auto& [u, v] : qr_set) {
|
|
if (dr->query(u, v))
|
|
;
|
|
else
|
|
in_set.push_back({ u, v });
|
|
}
|
|
|
|
for (const auto& [u, v] : in_set)
|
|
dr->insert(u, { v });
|
|
|
|
return 0;
|
|
} |