Кратчайший путь в графе: ошибка в программе - C#

Узнай цену своей работы

Формулировка задачи:

Подскажите, пожалуйста, что не так? Программная реализация алгоритма Форда-Беллмана, поиск кратчайшего пути в графе
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace FordBellman
  7. {
  8. class Ford
  9. {
  10. static void Main()
  11. {
  12. int n, s, m, k = 0, mod_e; // mod_e - Кол-во ребер (во всем графе)
  13. mod_e = k; // k - счетчик массивов ребер
  14. int[] a = new int[200]; // массив начал ребер
  15. int[] b = new int[200]; // массив концов ребер
  16. int[] w = new int[200]; // массив весов ребер
  17. int[] d = new int[200]; // массив расстояний
  18. Console.WriteLine("Введите количество вершин:");
  19. n = int.Parse(Console.ReadLine()); // Количество вершин
  20. Console.WriteLine("\nВведите номер стартовой вершины:");
  21. s = int.Parse(Console.ReadLine()); // Стартовая вершина
  22. for (int i = 1; i <= n; i++) // Задание массивов ребер
  23. {
  24. Console.WriteLine("\nВведите количество ребер, исходящих из вершины " +i);
  25. m = int.Parse(Console.ReadLine());
  26. for (int j = 1; j <= m; j++)
  27. {
  28. a[k] = i;
  29. Console.WriteLine("\nВведите номер конечной вершины для "+ j + "-го ребра, исходящего из "+ i+ ":");
  30. b[k] = int.Parse(Console.ReadLine());
  31. Console.WriteLine("\nВведите вес "+ j+ "-го ребра, исходящего из "+ i+ ":");
  32. w[k] = int.Parse(Console.ReadLine());
  33. k++;
  34. }
  35. mod_e++;
  36. }
  37. for (int i = 1; i <= n; i++) d[i] = 999999;
  38. d[s] = 0;
  39. for (int i = 1; i < n; i++)
  40. {
  41. if (i == s) i++;
  42. else
  43. {
  44. for (int j = 1; j <= mod_e; j++)
  45. {
  46. if (d[b[j]] > (d[a[j]] + w[j])) d[b[j]] = d[a[j]] + w[j];
  47. j++;
  48. }
  49. i++;
  50. }
  51. }
  52. for (int i = 1; i <= n; i++)
  53. {
  54. Console.WriteLine("\n\n\nКратчайший путь до вершины " + i + " = " + d[i]);
  55. }
  56. Console.WriteLine(d);
  57. Console.ReadLine();
  58. }
  59. }
  60. }

Решение задачи: «Кратчайший путь в графе: ошибка в программе»

textual
Листинг программы
  1.    for (int i = 1; i < n; i++)
  2.             {
  3.                 if (i == s) i++;
  4.                 else
  5.                 {
  6.                     for (int j = 1; j <= mod_e; j++)
  7.                     {
  8.                         if (d[b[j]] > (d[a[j]] + w[j])) d[b[j]] = d[a[j]] + w[j];
  9.                         j++;
  10.                     }
  11.                     i++;
  12.                 }
  13.             }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы