^
- это битовый оператор xor в C ++ (также в C, Java и т. Д.).
Побитовый xor бита (0/1) с 1 переворачиванием этого бита, т.е.
0 ^ 1 = 1
1 ^ 1 = 0
Как указано в википедии
Побитовый XOR может использоваться для инвертирования выбранных битов в регистре (также называемый переключением или переключением). Любой бит может быть переключен путем XORing его с 1.
В этом алгоритме он используется для определения набора, к которому должен принадлежать узел u
.
Поскольку u
и v
связаны (поскольку u
находится в списке смежности v
), то u
должен принадлежать другому набору как v
(свойство двудольного графа).
Наборы записываются в массиве side[]
, который хранит 0 или 1 для двух непересекающихся наборов вершин и -1
как неинициализированное значение.