}
//если хотя бы одну не нашли(start == -1 || finish == -1) {
//ошибка.Show("Не указана начальная или конечная вершина!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
//и выходим return;
}(tn.aVertex[start].Enabled == false || tn.aVertex[finish].Enabled == false) {
//ошибка.Show("Начальная или конечная вершина заблокированы!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
//и выходим return;
}
//нужно снять отметку с старого пути
for (int i = 0; i < tn.aEdge.Count; i++) {.aEdge[i].IsPartOfPath = false; }
//нужно снять отметку с старого пути
for (int i = 0; i < tn.aVertex.Count; i++) {.aVertex[i].IsPartOfPath = false; }_path.Clear(); best_pathE.Clear(); best_weight = int.MaxValue;_path.Clear(); current_pathE.Clear(); current_weight = 0; current_transfer = 0;
rdfs(-1, start, -1, finish);
//если не нашли путь
if (best_weight == int.MaxValue) {
//ошибка.Show("Путь до конечной вершины не может быть найден!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
//и выходим return;
}
//теперь нужно пометить путь while (best_pathE.Count != 0) {i = best_pathE.Pop();.aEdge[i].IsPartOfPath = true;.aVertex[tn.aEdge[i].srcVertex].IsPartOfPath = true; tn.aVertex[tn.aEdge[i].destVertex].IsPartOfPath = true;
}
//отрисовать.Draw(checkBoxShowInvisible.Checked, checkBoxShowDeleted.Checked);
}