public static int solve(GraphExt <int> root, int dest) { if (root == null) { return(-1); } var queue = new Queue <GraphExt <int> >(); root.Steps = 0; while (queue.Count > 0) { var node = queue.Dequeue(); if (node.Visited) { continue; } else { if (node.Value == dest) { return(node.Steps); } node.Visited = true; foreach (var child in node.Children) { var childExt = child as GraphExt <int>; if (!childExt.Visited) { childExt.Steps = node.Steps + 1; queue.Enqueue(childExt); } } } } return(-1); }
private void Form1_Load(object sender, EventArgs e) { //въвеждам градовете от фиг.9.1 от учебника ge = new GraphExt(); ge.addVertex("София"); //1 ge.addVertex("Пловдив"); //2 ge.addVertex("Стара Загора"); //3 ge.addVertex("Банско"); //4 ge.addVertex("Сливен"); //5 ge.addVertex("Враца"); //6 ge.addVertex("Видин"); //7 ge.addVertex("Плевен"); //8 ge.addVertex("Велико Търново"); //9 ge.addVertex("Русе"); //10 ge.addVertex("Добрич"); //11 ge.addVertex("Шумен"); //12 ge.addVertex("Варна"); //13 ge.addVertex("Бургас"); //14 ge.addVertex("Кърджали"); //15 ge.addVertex("Хасково"); //16 ge.addVertex("Перник"); //17 ge.addVertex("Благоевград"); //18 //Въвеждам ребрата makeAdge(1, 2); //София Пловдив makeAdge(1, 4); //София Банско makeAdge(1, 5); //София Сливен makeAdge(1, 6); //София Враца makeAdge(1, 8); //София Плевен makeAdge(1, 9); //София Велико Търново makeAdge(1, 17); //София Перник makeAdge(2, 4); //Пловдив Банско makeAdge(2, 3); //Пловдив Стара Загора makeAdge(2, 15); //Пловдив Кърджали makeAdge(2, 16); //Пловдив Хасково makeAdge(18, 17); //Благоевград Перник makeAdge(18, 4); //Благоевград Банско makeAdge(7, 6); //Видин Враца makeAdge(7, 8); //Видин Плевен makeAdge(6, 8); //Враца Плевен makeAdge(9, 8); //Велико Търново Плевен makeAdge(9, 10); //Велико Търново Русе makeAdge(9, 11); //Велико Търново Добрич makeAdge(9, 12); //Велико Търново Шумен makeAdge(9, 5); //Велико Търново Сливен makeAdge(9, 3); //Велико Търново Стара Загора makeAdge(10, 8); //Русе Плевен makeAdge(10, 11); //Русе Добрич makeAdge(10, 12); //Русе Шумен makeAdge(11, 13); //Добрич Варна makeAdge(12, 13); //Шумен Варна makeAdge(12, 5); //Шумен Сливен makeAdge(5, 3); //Сливен Стара Загора makeAdge(14, 13); //Бургас Варна makeAdge(14, 5); //Бургас Сливен makeAdge(14, 16); //Бургас Хасково makeAdge(16, 3); //Хасково Стара Загора }