Arc) and undirected edges (UEdge). I'm representing the type of edge using an EdgeType enum. Also, for the endpoints, I'm simply representing it as a Tuple<Node, Node>Node class is one that im not sure what to put inside, for the moment all that I have in the node class is an integer for its index in the graph.Graph class is an abstract class from which 3 classes will inherit: DiGraph (Directed Graph), UGraph (Undirected Graph) and PGraph (Ponderated graph, a graph in which each edge has a value i.e. the use case of Djikstra's algorithm). This class would have a List<Edge> called Edges for all the edges in the graph, and a List<Node> called Nodes for all the Nodes. Nodes wouldn't be taken as an argument in the constructor, since I could just extract the nodes from the edges and then set the list equal to those in the constructor.