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);
}
}