判断无向图是否为二分图(Bipartite Graph)
一、题目描述
我们有一个无向图,图中有 n
个节点,节点编号从 0
到 n - 1
,用一个二维数组 graph
表示图的邻接表结构,其中 graph[u]
是一个包含所有与节点 u
相邻节点编号的数组。
该图满足以下条件:
- 不存在自环,即不存在
graph[u]
包含u
的情况; - 不存在平行边,即
graph[u]
中不包含重复值; - 是无向图,即如果
v
在graph[u]
中,则u
也一定在graph[v]
中; - 图可能是非连通图,也就是说两个节点之间不一定总存在路径。
现在我们需要判断这个图是否是二分图(Bipartite Graph)。
什么是二分图?
一个图是二分图,当且仅当可以将图的节点集合划分为两个不相交的子集 A 和 B,使得图中每条边连接的两个节点一个来自 A,另一个来自 B。
简而言之:图中每条边的两个端点不能属于同一个子集。