// LLP-Traversal1: reachability on a directed graph. #include #include void llpTraversal(const std::vector>& pre, std::vector& G) { int n = (int)G.size(); bool changed = true; while (changed) { changed = false; for (int j = 0; j < n; ++j) { if (G[j]) continue; for (int i : pre[j]) { if (G[i]) { G[j] = true; changed = true; break; } } } } } int main() { std::vector> pre = { {}, {0}, {0}, {1, 2}, {2}, {3, 4} }; std::vector G(pre.size(), false); G[0] = true; llpTraversal(pre, G); std::cout << "reachable:"; for (bool x : G) std::cout << ' ' << (x ? 1 : 0); std::cout << '\n'; return 0; }