#pragma once #include #include #include #include class LoopDetection { public: LoopDetection() = default; virtual ~LoopDetection(); virtual void add_connection(const std::string &src, const std::vector &dests); private: std::unordered_map> adj_list; virtual bool detect_cycle(const std::string &start); virtual bool is_cyclic(const std::string &node, std::unordered_set &visited, std::unordered_set &rec_stack); };