В вопросе 22.2.6 Cormen у нас проблема борца. Там, где говорится, есть N борец i.e N узлов и r пар для соперничества, то есть ребра, и нам нужно разделить борца на хороших и плохих парней, чтобы не было двух хороших парней.Противостояние Cormen Wrestler BFS
Решение дано это
Выполните столько BFSS по мере необходимости, чтобы посетить все вершины. Назначьте всех борцов, чья дистанция - это даже хорошие ребята, и все борцы, чья дальность нечетна, являются плохими. ребята. Затем проверьте каждый край, чтобы убедиться, что он идет между хорошим парнем и плохим парнем . Это решение потребовало бы времени O (n + r) для времени BFS, O (n), чтобы назначить каждому борец в качестве хорошего парня или плохого парня и время O (r) для проверки краев, которое равно O (n + r) общее время.
У меня есть несколько вопросов по поводу решения
Perform столько BFSS, сколько необходимо, чтобы посетить все вершины. -> Начиная с разных узлов каждый раз? Но они будут давать нам одно и то же связующее дерево каждый раз?
насчет узлов, которые не достижимы из BFS
Граф может быть не подключен, вот почему вам нужны несколько BFS. Вы начинаете с невидимого узла каждый раз. –