diff --git a/lib/possible_bipartition.rb b/lib/possible_bipartition.rb index 69507f1..ce9af0b 100644 --- a/lib/possible_bipartition.rb +++ b/lib/possible_bipartition.rb @@ -1,4 +1,35 @@ +def possible_bipartition_helper(dislikes, src, colorArr) + return true if dislikes.length == 0 -def possible_bipartition(dislikes) - raise NotImplementedError, "possible_bipartition isn't implemented yet" + colorArr[src] = 1 + + queue = [] + queue.append(src) + + while queue.length > 0 + dog = queue.shift + dislikes[dog].each do |disliked_dog| + if colorArr[disliked_dog] == -1 + colorArr[disliked_dog] = 1 - colorArr[dog] + queue.append(disliked_dog) + elsif colorArr[disliked_dog] == colorArr[dog] + return false + end + end + end + return true end + +def possible_bipartition(dislikes) + colorArr = [-1] * dislikes.length + i = 0 + while i < dislikes.length + if colorArr[i] == -1 + if possible_bipartition_helper(dislikes, i, colorArr) == false + return false + end + end + i += 1 + end + return true +end \ No newline at end of file