@Alone_Fox

Как найти количество компонент связности графа?

for (int i = 0; i < n; i++)
    {
        if (was[i] != -1)
           continue;
        q.push(i);
        while (!q.empty())
        {
              int v = q.front();
              q.pop();
              if (was[v] != -1)
                 continue;
              was[v] = cur;
              for (int j = 0; j < n; j++)
                  if (mas[i][j] != 0 && was[j] == -1)
                     q.push(j);
        }
        cur++;
    }


Данный код считает максимальную компоненту связности. Как найти их количество?
Например,
3
0 0 0
0 0 1
0 1 0
Эта программа выводит 3, а количество будет равно 2.
  • Вопрос задан
  • 4806 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Выбираете первую вершину графа, отмечаете её и все связанные с ней точки (прямо или чрез другие вершины). Получаете первую компоненту. Выбираете следующую непомеченную вершину графа, от неё получаете вторую компоненту и т.д., пока не останется непомеченных вершин.
Ответ написан
@xdgadd
ML/Python/Cpp
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы