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 != j
for whichdislikes[i] == dislikes[j]
.
Решение
Hash map + DFS
Создаем мапу, где ключом будет id человека,а значение – массив людей, котороые ему не нравятся.
Обойдем весь массив дизлайков и запишем дизлайки в мапу, но запишем в каждую сторонут, то есть когда мы встретим дизлайк [3,5]
- мы запишем, что третьему не нравится пятый , и что пятому не нравится третий. ( то есть m[3]=[...,5,...]
и m[5]=[...,3,...]
).
И дальше поиск в глубину
|
|