From 1477ceced45cc149574ff04f08f00f69e49117d0 Mon Sep 17 00:00:00 2001 From: cathos Date: Thu, 19 Jan 2023 22:55:53 -0800 Subject: [PATCH 1/2] passed tests --- graphs/possible_bipartition.py | 44 +++++++++++++++++++++++++++++++++- requirements.txt | 16 ++++++------- 2 files changed, 51 insertions(+), 9 deletions(-) diff --git a/graphs/possible_bipartition.py b/graphs/possible_bipartition.py index ca55677..f9403de 100644 --- a/graphs/possible_bipartition.py +++ b/graphs/possible_bipartition.py @@ -8,5 +8,47 @@ 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 + + +dislikes = { + "Fido": ["Alfie", "Bruno"], + "Rufus": ["James", "Scruffy"], + "James": ["Rufus", "Alfie"], + "Alfie": ["Fido", "James", "T-Bone"], + "T-Bone": ["Alfie", "Scruffy"], + "Scruffy": ["Rufus", "T-Bone"], + "Bruno": ["Fido"] +} + +possible_bipartition(dislikes) 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 From c59134c32e0d2ea3a5106417238ea3c075e2cc5e Mon Sep 17 00:00:00 2001 From: cathos Date: Thu, 19 Jan 2023 23:07:14 -0800 Subject: [PATCH 2/2] minor changes --- graphs/possible_bipartition.py | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/graphs/possible_bipartition.py b/graphs/possible_bipartition.py index f9403de..40ae503 100644 --- a/graphs/possible_bipartition.py +++ b/graphs/possible_bipartition.py @@ -38,17 +38,3 @@ def possible_bipartition(dislikes): q.append(dog) return True - - -dislikes = { - "Fido": ["Alfie", "Bruno"], - "Rufus": ["James", "Scruffy"], - "James": ["Rufus", "Alfie"], - "Alfie": ["Fido", "James", "T-Bone"], - "T-Bone": ["Alfie", "Scruffy"], - "Scruffy": ["Rufus", "T-Bone"], - "Bruno": ["Fido"] -} - -possible_bipartition(dislikes) -