886. Possible Bipartition
Содержание
Условие задачи
Дан набор из Nлюдей (все пронумерованы 1,2, … , N), мы хотим разделить этих людей на две группы.
Каждый человек может не любить другого человека, и такие люди долджны быть в разных группах.
dislikes[i] = [a, b] – означатет что нельзя человека aи b поместить в одну группу.
Необходимо вернуть true если такое разбиение возможно.
пример 1
|
|
пример 2
|
|
пример 3
|
|
пример 4
|
|
Ограничения
- 1 <=
N<= 2000 - 0 <=
dislikes.length<= 10000 - 1 <=
dislikes[i][j]<= N dislikes[i][0] < dislikes[i][1]- There does not exist
i != jfor whichdislikes[i] == dislikes[j].
Решение
Hash map + DFS
Создаем мапу, где ключом будет id человека,а значение – массив людей, котороые ему не нравятся.
Обойдем весь массив дизлайков и запишем дизлайки в мапу, но запишем в каждую сторонут, то есть когда мы встретим дизлайк [3,5] - мы запишем, что третьему не нравится пятый , и что пятому не нравится третий. ( то есть m[3]=[...,5,...] и m[5]=[...,3,...]).
И дальше поиск в глубину
|
|