假设std::set< std::pair<char, char> >
,是否有人建议使用算法或方法来检查是否存在循环对?
e.g。
std::set< std::pair<char, char> > cyclic = { {'A', 'B'}, {'B', 'C'}, {'C', 'A'} };
std::set< std::pair<char, char> > not_cyclic = { {'A', 'B'}, {'B', 'C'}, {'C', 'C'} };
isCyclic(cyclic); // true
isCyclic(not_cyclic); // false
我不想使用任何extern库(允许使用c ++库),因为函数bool isCyclic(const std::set< std::pair<char, char> >& set);
只会被使用一次而且它应该是#include
一个大的库,比如boost {对于那个功能...
有任何想法如何解决这个问题?
答案 0 :(得分:0)
这里有一个图形,字符是它的顶点和集合中的对 - 边缘。您可以使用BFS
或DFS
的任何搜索轻松检测是否存在循环。
另请查看this question。不要介意它处理无向的情况,因为算法是相同的。