diff --git a/cmd/bin/graphs0.dart b/cmd/bin/graphs0.dart index 05db1dc..e8422c0 100644 --- a/cmd/bin/graphs0.dart +++ b/cmd/bin/graphs0.dart @@ -13,7 +13,7 @@ void printGraphsName(List inp) { } void main(List arguments) { - /*Map x = {2: 10}; + /* Map x = {2: 10}; var p = Dot.fromMap("Т1", x); p.printD(); x = {}; @@ -31,10 +31,10 @@ void main(List arguments) { x1.printToFile("o.txt"); var x2 = Graphs.fromFile("o.txt"); x2.printG(); - print(x2.bfsHasPath(1, 4)); + print(x2.bfsPath(1, 3)); - Graphs x1 = Graphs("Gt", false, true); + var x1 = Graphs("Gt", false, true); x1.addIsolated("T1"); x1.addIsolated("T2"); x1.addIsolated("T3"); @@ -43,17 +43,18 @@ void main(List arguments) { x1.addPath(3, 2, 5); x1.addPath(2, 4, 10); x1.printG(); - print(x1.bfsPath(1, 4)); - print(x1.bfsHasPath(1, 4)); - print(x1.dfsIterative(1)); - */ + //print(x1.bfsPath(1, 4)); + //print(x1.dfsIterative(1)); + print(x1.dijkstra(2)); +*/ + int deistvie = 1; List graphs = []; String name; String str = ""; while (deistvie != 0) { stdout.write( - "1 - создать граф, 2 - удалить граф, 3 - добавить в граф вершину,\n4 - удалить вершину, 5 - добавить ребро/дугу, 6 - удалить ребро/дугу,\n7 - вывести граф на экран, 8 - вывести граф в файл, 9 - обход в ширину,\n0 - выход\nDeistvie: "); + "1 - создать граф, 2 - удалить граф, 3 - добавить в граф вершину,\n4 - удалить вершину, 5 - добавить ребро/дугу, 6 - удалить ребро/дугу,\n7 - вывести граф на экран, 8 - вывести граф в файл, 9 - алгоритмы,\n0 - выход\nDeistvie: "); deistvie = getIntLine(); switch (deistvie) { case 1: @@ -287,21 +288,54 @@ void main(List arguments) { } case 9: { - int num = graphs.length; + print("1 - BFS, 2 - DFS, 3 - Дейкстра. Действие:"); + int d = getIntLine(); printGraphsName(graphs); + int num = graphs.length; stdout.write("Работаем в графе с номером: "); int y = getIntLine(); + graphs[y].printG(); if (y >= 0 && y < num) { - graphs[y].printG(); num = graphs[y].getDotAmount(); stdout.write("Вершина, из которой выходят: "); int x1 = getIntLine(); - stdout.write("Вершина, в которую идут: "); - int x2 = getIntLine(); - if (x1 >= 0 && x1 <= num && x2 >= 0 && x2 <= num) { - print("BFS: ${graphs[y].bfsPath(x1, x2)}"); - } else { - print("Не найдены введеные вершины в графе\n"); + switch (d) { + case 1: + { + stdout.write("Вершина, в которую идут: "); + int x2 = getIntLine(); + if (x1 >= 0 && x1 <= num && x2 >= 0 && x2 <= num) { + print("BFS: ${graphs[y].bfsPath(x1, x2)}"); + } else { + print("Не найдены введеные вершины в графе\n"); + } + break; + } + case 2: + { + if (x1 >= 0 && x1 <= num) { + print("DFS: ${graphs[y].dfsIterative(x1)}"); + } else { + print("Не найдена введеныая вершина в графе\n"); + } + break; + } + case 3: + { + if (x1 >= 0 && x1 <= num) { + print("Dijkstra: ${graphs[y].dijkstra(x1)}"); + if (!graphs[y].getUseLengthBool()) { + print("*Т.к. граф не взвешенный, то вес пути = 1.\n"); + } + } else { + print("Не найдена введеная вершина в графе\n"); + } + break; + } + default: + { + break; + } } } else { print("Не найден граф с таким номером");