Кратчайший путь с помощью BFS через матрицу смежности
Есть матрица смежности, состоящая из весов(расстояний между вершинами). Нужно с помощью bfs найти кратчайшее расстояние от одной вершины до другой.
int[,] matrix =
{
{ 0, 4, 8, 0},
{ 4, 0, 2, 0},
{ 8, 2, 0, 0},
{ 0, 0, 0, 0},
};
void BFS(int[,] matrix, int start, int end)
{
int[] dist = new int[1000];
bool[] mark = new bool[1000];
dist[start] = 0;
Queue<int> Q = new Queue<int>();
Q.Enqueue(start); //Добавить в конец очереди
mark[p] = true;
while (Q.Count > 0)
{
int u = Q.Dequeue(); //Удаляет элемент из начала очереди и возвращает его
for (int i = 0; i < matrix.GetLength(0); ++i)
{
if (matrix[u, i] != 0 && !mark[i])
{
mark[i] = true;
Q.Enqueue(i);
}
}
}
}