判断能否将人员分为两组 — 可能的二分划分问题详解
题目描述
给定一个整数 n
,表示有 n
个人,编号为 1
到 n
。同时给定一个二维数组 dislikes
,其中每个元素 dislikes[i] = [a_i, b_i]
表示编号为 a_i
和 b_i
的两个人不喜欢彼此,要求这两个人不能分到同一组。
你的任务是判断是否存在一种方式,将这 n
个人分成两组(组大小不限),使得每对不喜欢的人都在不同的组中。如果存在这样的分组方案,返回 true
,否则返回 false
。
示例
示例 1:
输入:
n = 4
dislikes = [[1,2],[1,3],[2,4]]
输出:
true
解释:
一种可行的分组是:
组1: [1,4]
组2: [2,3]
不喜欢的两人都不在同一组。
示例 2:
输入:
n = 3
dislikes = [[1,2],[1,3],[2,3]]
输出:
false
解释:
任何划分都会导致至少一对不喜欢的人被分在同一组。
示例 3:
输入:
n = 5
dislikes = [[1,2],[2,3],[3,4],[4,5],[1,5]]
输出:
false
解释:
图中存在奇环,无法将人员分成两组。