Кратчайший путь в графе: ошибка в программе - C#
Формулировка задачи:
Подскажите, пожалуйста, что не так? Программная реализация алгоритма Форда-Беллмана, поиск кратчайшего пути в графе
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FordBellman
{
class Ford
{
static void Main()
{
int n, s, m, k = 0, mod_e; // mod_e - Кол-во ребер (во всем графе)
mod_e = k; // k - счетчик массивов ребер
int[] a = new int[200]; // массив начал ребер
int[] b = new int[200]; // массив концов ребер
int[] w = new int[200]; // массив весов ребер
int[] d = new int[200]; // массив расстояний
Console.WriteLine("Введите количество вершин:");
n = int.Parse(Console.ReadLine()); // Количество вершин
Console.WriteLine("\nВведите номер стартовой вершины:");
s = int.Parse(Console.ReadLine()); // Стартовая вершина
for (int i = 1; i <= n; i++) // Задание массивов ребер
{
Console.WriteLine("\nВведите количество ребер, исходящих из вершины " +i);
m = int.Parse(Console.ReadLine());
for (int j = 1; j <= m; j++)
{
a[k] = i;
Console.WriteLine("\nВведите номер конечной вершины для "+ j + "-го ребра, исходящего из "+ i+ ":");
b[k] = int.Parse(Console.ReadLine());
Console.WriteLine("\nВведите вес "+ j+ "-го ребра, исходящего из "+ i+ ":");
w[k] = int.Parse(Console.ReadLine());
k++;
}
mod_e++;
}
for (int i = 1; i <= n; i++) d[i] = 999999;
d[s] = 0;
for (int i = 1; i < n; i++)
{
if (i == s) i++;
else
{
for (int j = 1; j <= mod_e; j++)
{
if (d[b[j]] > (d[a[j]] + w[j])) d[b[j]] = d[a[j]] + w[j];
j++;
}
i++;
}
}
for (int i = 1; i <= n; i++)
{
Console.WriteLine("\n\n\nКратчайший путь до вершины " + i + " = " + d[i]);
}
Console.WriteLine(d);
Console.ReadLine();
}
}
}Решение задачи: «Кратчайший путь в графе: ошибка в программе»
textual
Листинг программы
for (int i = 1; i < n; i++)
{
if (i == s) i++;
else
{
for (int j = 1; j <= mod_e; j++)
{
if (d[b[j]] > (d[a[j]] + w[j])) d[b[j]] = d[a[j]] + w[j];
j++;
}
i++;
}
}