这条代码线在双方图算法中通过BFS做什么

What does this line of code do in bipartite graph algorithm through bfs?

本文关键字:BFS 什么 算法 方图 代码      更新时间:2023-10-16

我一直从https://cp-algorithms.com/graph/biparpetite-check.html读取两部分算法,我遇到了一行:

side[u] = side[v] ^ 1

这条代码行有什么作用?^1 是什么?

尝试搜索它,但没有提出任何结果。

^是C 中的位XOR操作员(也在C,Java等(。

dit(0/1(的位xor,带有1个flips,即。

0 ^ 1 = 1
1 ^ 1 = 0

Wikipedia上给出

位XOR可用于在寄存器中反转选定的位(也称为toggle或flip(。任何位都可以通过用1来切换。

在此算法中,它被用来确定node u所属的集合。
由于uv已连接(因为u位于v的邻接列表中(,因此u应属于不同集合的 v(二级值图的属性(。

这些集合被记录在side[]数组中,该数组存储了两个不相交的顶点集的0或1,而-1是非专业化值。