#pragma once #include #include #include #include #include #include #include #include #include using namespace std; class Graph { private: int length; list *adj; public: Graph(int length) { this->length = length; this->adj = new list[length]; } ~Graph() { delete[] adj; } public: void Print(); void Insert(int u, int v); void InsertD(int u, int v); void Remove(int u, int v); void RemoveD(int u, int v); void TransitiveReduction1(); void TransitiveReduction2(); void TransitiveReduction3(); Graph *Clone(); };