static void Main(string[] args) { var lines = File.ReadAllLines(@"Resources\tinyG.txt"); Graph g = new Graph(Convert.ToInt32(lines[0])); foreach (var str in lines.Skip(2)) { int fromEdge = Convert.ToInt32(str.Split(' ')[0]); int toEdge = Convert.ToInt32(str.Split(' ')[1]); g.AddEdge(fromEdge, toEdge); } //DFS(g); //BFS(g); SymbolGraphTest(); Console.WriteLine(); }
public static void Main(string[] args) { Console.WriteLine("Hello World!"); Graph g = new Graph(5); g.AddVertex(1.ToString()); g.AddVertex(2.ToString()); g.AddVertex(3.ToString()); g.AddVertex(4.ToString()); g.AddVertex(5.ToString()); for (int i = 0; i < 5; i++) { Console.WriteLine("Added Vertex : " + g.GetVertexAtIndex(i).label); } Vertex v1 = g.GetVertexAtIndex(0); Vertex v2 = g.GetVertexAtIndex(1); Vertex v4 = g.GetVertexAtIndex(4); Console.WriteLine("Adding Edge Between "); Console.Write(" " + v1.label + " and " + v2.label); g.AddEdge(v1, v2); Console.Write(", " + v1.label + " and " + v4.label); g.AddEdge(v1, v4); Console.WriteLine(); Console.WriteLine("Vertex Edges Connected to"); g.ShowEdgesOfVertex(v1); Graph gr = new Graph(10); gr.AddVertex("A"); gr.AddVertex("B"); gr.AddVertex("C"); gr.AddVertex("D"); gr.AddVertex("E"); gr.AddVertex("F"); gr.AddVertex("G"); gr.AddVertex("H"); gr.AddVertex("I"); gr.AddVertex("J"); Vertex m1 = gr.GetVertexAtIndex(0); Vertex m2 = gr.GetVertexAtIndex(1); Vertex m3 = gr.GetVertexAtIndex(2); Vertex m4 = gr.GetVertexAtIndex(3); Vertex m5 = gr.GetVertexAtIndex(4); Vertex m6 = gr.GetVertexAtIndex(5); Vertex m7 = gr.GetVertexAtIndex(6); Vertex m8 = gr.GetVertexAtIndex(7); Vertex m9 = gr.GetVertexAtIndex(8); Vertex m10 = gr.GetVertexAtIndex(9); gr.AddEdge(m1, m2); gr.AddEdge(m2, m3); gr.AddEdge(m3, m4); gr.AddEdge(m1, m5); gr.AddEdge(m5, m6); gr.AddEdge(m6, m7); gr.AddEdge(m1, m8); gr.AddEdge(m8, m9); gr.AddEdge(m9, m10); gr.DepthFirstSearch(); gr.BredthFirstSearch(); Console.ReadLine(); }
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; } } }
static Graph InitIndirectedGraph2() { Graph g = new Graph(7); for (int i = 0; i < g.MaxVertexNumber; i++) { g.AddVertex(new Vertex(((char)('A' + i)).ToString())); } g.AddEdge(0, 1, 2); g.AddEdge(0, 3, 1); g.AddEdge(1, 3, 3); g.AddEdge(1, 4, 10); g.AddEdge(2, 5, 5); g.AddEdge(2, 0, 4); g.AddEdge(3, 2, 2); g.AddEdge(3, 5, 8); g.AddEdge(3, 4, 2); g.AddEdge(3, 6, 4); g.AddEdge(4, 6, 6); g.AddEdge(6, 5, 1); return(g); }
static Graph InitIndirectedGraph() { Graph g = new Graph(20); for (int i = 0; i < g.MaxVertexNumber; i++) { g.AddVertex(new Vertex(((char)('A' + i)).ToString())); } g.AddEdge(0, 1); g.AddEdge(1, 2); g.AddEdge(2, 3); g.AddEdge(0, 4); g.AddEdge(4, 5); g.AddEdge(5, 6); g.AddEdge(0, 7); g.AddEdge(7, 8); g.AddEdge(8, 9); g.AddEdge(0, 10); g.AddEdge(10, 11); g.AddEdge(11, 12); return(g); }
public static void Main (string[] args) { Console.WriteLine ("Hello World!"); Graph g = new Graph (5); g.AddVertex (1.ToString()); g.AddVertex (2.ToString()); g.AddVertex (3.ToString()); g.AddVertex (4.ToString()); g.AddVertex (5.ToString()); for (int i = 0; i < 5; i++) { Console.WriteLine ("Added Vertex : " + g.GetVertexAtIndex (i).label); } Vertex v1 = g.GetVertexAtIndex (0); Vertex v2 = g.GetVertexAtIndex (1); Vertex v4 = g.GetVertexAtIndex (4); Console.WriteLine ("Adding Edge Between "); Console.Write (" " + v1.label + " and " + v2.label); g.AddEdge (v1, v2); Console.Write (", " + v1.label + " and " + v4.label); g.AddEdge (v1, v4); Console.WriteLine (); Console.WriteLine ("Vertex Edges Connected to"); g.ShowEdgesOfVertex (v1); Graph gr = new Graph (10); gr.AddVertex ("A"); gr.AddVertex ("B"); gr.AddVertex ("C"); gr.AddVertex ("D"); gr.AddVertex ("E"); gr.AddVertex ("F"); gr.AddVertex ("G"); gr.AddVertex ("H"); gr.AddVertex ("I"); gr.AddVertex ("J"); Vertex m1 = gr.GetVertexAtIndex (0); Vertex m2 = gr.GetVertexAtIndex (1); Vertex m3 = gr.GetVertexAtIndex (2); Vertex m4 = gr.GetVertexAtIndex (3); Vertex m5 = gr.GetVertexAtIndex (4); Vertex m6 = gr.GetVertexAtIndex (5); Vertex m7 = gr.GetVertexAtIndex (6); Vertex m8 = gr.GetVertexAtIndex (7); Vertex m9 = gr.GetVertexAtIndex (8); Vertex m10 = gr.GetVertexAtIndex (9); gr.AddEdge (m1, m2); gr.AddEdge (m2, m3); gr.AddEdge (m3, m4); gr.AddEdge (m1, m5); gr.AddEdge (m5, m6); gr.AddEdge (m6, m7); gr.AddEdge (m1, m8); gr.AddEdge (m8, m9); gr.AddEdge (m9, m10); gr.DepthFirstSearch (); gr.BredthFirstSearch (); Console.ReadLine (); }