Split people into two groups

Write codeHard35 min

Your task

You are given n people (0..n-1) and a list of dislike pairs [a, b] meaning a and b refuse to be in the same group. Determine whether everyone can be split into exactly two groups so that no disliking pair shares a group. Return true if possible, false otherwise. This is equivalent to testing whether the dislike graph is bipartite. The graph may be disconnected; duplicate dislike pairs may appear; no self-dislikes.

Examples

possible_two_groups(n: int, dislikes: list[list[int]]) -> bool
Example 1
Inputpossible_two_groups(4, [[0, 1], [0, 2], [1, 3], [2, 3]])
OutputTrue