Как сделать обход в ширину и поиск компонент связности через матрицу смежности?

У меня вершины графа являются объектами класса Vertex. Нужно реализовать обход в ширину и поиск компонент связности через матрицу смежности matrix. Имеющийся код ничего не выводит в консоль, в чем проблема?

public void DFS(ref int?[,] matrix, Vertex s)
        {
            int k = Vertexes.IndexOf(s);
            mark[k] = true;
            for (int i = 0; i < Vertexes.Count; ++i)
            {
                int nxt = (int)matrix[k,i];
                if (!mark[nxt])
                {
                    DFS(ref matrix, nxt);
                }
            }
        }

    public void BFS(ref int?[,] matrix, Vertex s) //обход в ширину
        {
            bool[] mark = new bool[Vertexes.Count];
            int p = Vertexes.IndexOf(s);
            Queue<int> Q = new Queue<int>();
            Q.Enqueue(p);
            mark[p] = true;
            while (Q.Count > 0)
            {
                int u = Q.Dequeue();
                for (int i = 0; i < Vertexes.Count; ++i)
                {
                    if (matrix[u, i] == 1 && !mark[i])
                    {
                        mark[i] = true;
                        Q.Enqueue(i);
                    }
                }
            }
        }
public int connectedbfs(ref int?[,] matrix)
        {
            int cnt = 0;
            bool[] mark = new bool[Vertexes.Count];
            while (true)
            {
                foreach (Vertex v in Vertexes)
                {
                    int m = Vertexes.IndexOf(v);
                    if (!mark[m])
                    {
                        BFS(ref matrix, v);
                        ++cnt;
                    }

                }
                return cnt;
            }
        }

Ответы (1 шт):

Автор решения: MBo

Массивов mark два, и оба локальные.

В connectedbfs свой массив проверяется, но никогда не помечается.

А всё, что случается в BFS - там же и остаётся. Ну почти как в бойцовском клубе...

Должен быть один общий (глобальный) массив.

→ Ссылка