using System; using System.Collections.Generic; class Program { static void Main() { Graph graph = new Graph(); graph.AddVertex("A"); graph.AddVertex("B"); graph.AddVertex("C"); graph.AddVertex("D"); graph.AddVertex("E"); graph.AddVertex("F"); graph.AddEdge("A", "B"); graph.AddEdge("A", "C"); graph.AddEdge("B", "D"); graph.AddEdge("C", "E"); graph.AddEdge("D", "E"); graph.AddEdge("E", "F"); graph.AddEdge("B", "F"); graph.PrintGraph(); } } public class Graph { private List<string> vertices; private List<string[]> edges; public Graph() { vertices = new List<string>(); edges = new List<string[]>(); } public void AddVertex(string vertex) { vertices.Add(vertex); } public void AddEdge(string vertex1, string vertex2) { edges.Add(new string[] { vertex1, vertex2 }); } public void PrintGraph() { Console.WriteLine("Vertices:"); foreach (var vertex in vertices) { Console.WriteLine(vertex); } Console.WriteLine("Edges:"); foreach (var edge in edges) { Console.WriteLine($"{edge[0]} - {edge[1]}"); } } public void PrintDFS(Graph g, string v) { PreVisit(v); // logic PostVisit(v); } public void PrintBFS(Graph g, string v, Queue<string> q) { // logic } private void PreVisit(string v) { Console.WriteLine("We arrived to vertex: " + v); } private void PostVisit(string v) { Console.WriteLine("We are coming back on vertex: " + v); } private void End(string v) { Console.WriteLine("This vertex is last on this path: " + v); } }