在和有向图相关的实际应用中,有向环特别的重要。其中就可以解决一组任务的执行顺序问题,因为有的任务必须在另一个任务完成之后才能开始进行,此时就需要判断图中是否有环,有环的话是不能对这些任务的排序的。
左图就是有环图
下图没有形成环,就可以进行排序操作。
源代码示例:
#include <iostream>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;
class Digraph
{
public:
Digraph(size_t nvertax) : arr(nvertax), vertaxs(nvertax), edges(0) {}
void addEdge(size_t a, size_t b);
void removeEdge(size_t a, size_t b);
void addVertax(size_t v);
void removeVertax(size_t v);
Digraph reverse() const;
vector<size_t> adj(size_t v) const;
void showAdj(size_t v) const;
void showDigraph() const;
size_t edge() const { return edges; }
s