diff --git a/graphs/possible_bipartition.py b/graphs/possible_bipartition.py index ca55677..40ae503 100644 --- a/graphs/possible_bipartition.py +++ b/graphs/possible_bipartition.py @@ -8,5 +8,33 @@ def possible_bipartition(dislikes): Time Complexity: ? Space Complexity: ? """ - pass + if not dislikes: + return True + + first_dog = list(dislikes.keys())[0] + + q = deque([first_dog]) + v = [] + safe_rooms = {} + for key in dislikes.keys(): + safe_rooms[key] = 0 + + safe_rooms[first_dog] = 1 + + for dog in dislikes: + while q: + current = q.popleft() + v.append(current) + if dislikes[current]: + for rival in dislikes[current]: + if safe_rooms[rival] == 0: + safe_rooms[rival] = safe_rooms[current] + 1 + q.append(rival) + else: + if safe_rooms[rival] == safe_rooms[current]: + return False + if dog not in v: + q.append(dog) + + return True diff --git a/requirements.txt b/requirements.txt index 77ffa3f..fd9117f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,8 @@ -attrs==20.3.0 -iniconfig==1.1.1 -packaging==20.8 -pluggy==0.13.1 -py==1.10.0 -pyparsing==2.4.7 -pytest==6.2.1 -toml==0.10.2 +attrs +iniconfiG +packaging +pluggy +py +pyparsing +pytest +toml