static void Main(string[] args) { Graph graph = new Graph(); bool flag = true; Menu(); while (flag) { Console.WriteLine("Ваш выбор: "); int n = int.Parse(Console.ReadLine()); switch (n) { case 1: Console.WriteLine("Введите название вершины: "); string name = Console.ReadLine(); Console.WriteLine("Вершина добавлена с номером {0}", graph.AddVertex(name)); break; case 2: Console.WriteLine("Введите первую вершину: "); string v1 = Console.ReadLine(); Console.WriteLine("Введите вторую вершину: "); string v2 = Console.ReadLine(); Console.WriteLine("Введите расстояние: "); int d = int.Parse(Console.ReadLine()); graph.AddEdge(v1, v2, d); break; case 3: Console.WriteLine("Введите название вершины: "); string vert = Console.ReadLine(); graph.DeleteVertex(vert); break; case 4: Console.WriteLine("Введите первую вершину: "); string v1_ = Console.ReadLine(); Console.WriteLine("Введите вторую вершину: "); string v2_ = Console.ReadLine(); graph.DeleteEdge(v1_, v2_); break; case 5: graph.WriteMatrix("input.txt"); break; case 6: graph.Print(); break; case 7: Console.WriteLine("Введите вершину: "); string vertex = Console.ReadLine(); foreach (var v in graph.FindАdjacentVertexs(vertex)) { Console.Write(v.Name + " "); } Console.WriteLine(); break; case 8: Console.WriteLine("Введите вершину: "); vertex = Console.ReadLine(); foreach (var v in graph.FindNonАdjacentVertexs(vertex)) { Console.Write(v.Name + " "); } Console.WriteLine(); break; case 9: Graph graph1 = graph.GetdisorientedGraph(); graph1.Print(); break; case 10: Console.WriteLine("Введите вершину:"); var ve = Console.ReadLine(); foreach (var ver in graph.DFS(ve)) { Console.WriteLine(ver.Name); } break; case 11: int cnt = 0; if (graph.IsDisorientedGraph()) { foreach (var comp in graph.FindRelatedComponents()) { cnt++; Console.Write("{0} компонента связанности: ", cnt); foreach (var _vertex in comp) { Console.Write(_vertex.Name + " "); } Console.WriteLine(); } } else { foreach (var comp in graph.FindStrongRelatedComponents()) { cnt++; Console.Write("{0} компонента сильной связанности: ", cnt); foreach (var _vertex in comp) { Console.Write(_vertex + " "); } Console.WriteLine(); } } break; case 12: cnt = 0; foreach (var comp in graph.FindStrongRelatedComponents()) { cnt++; Console.Write("{0} компонента сильной связанности: ", cnt); foreach (var _vertex in comp) { Console.Write(_vertex + " "); } Console.WriteLine(); } break; case 13: Graph copy = new Graph(graph); graph = graph.GetdisorientedGraph(); Graph minGraph = graph.AlgBoruvka(); graph = copy; minGraph.Print(); break; case 14: Console.WriteLine(graph.FindVertexWithMinDistancees().Name); break; case 15: Console.Write("Центр графа: "); foreach (var verte in graph.FindCenter()) { Console.Write(verte.Name + " "); } Console.WriteLine(); break; case 16: Console.WriteLine("Минимальные расстояния: "); foreach (var edge in graph.GetMinDistancesForEachPair()) { Console.WriteLine(edge.V1.Name + " " + edge.V2.Name + " " + edge.Distance); } break; case 17: Console.WriteLine("Введите первую вершину: "); v1 = Console.ReadLine(); Console.WriteLine("Введите вторую вершину: "); v2 = Console.ReadLine(); Console.Write("Максимальный поток: {0} ", graph.maxFlow(v1, v2)); Console.WriteLine(); break; case 18: flag = false; break; } } }