From 5e8c2e11b13a2d7a4e66f107fadf1e310375b1ad Mon Sep 17 00:00:00 2001 From: formidablae <81068781+formidablae@users.noreply.github.com> Date: Mon, 4 Apr 2022 01:45:27 +0200 Subject: [PATCH] Solving (19 of 20 tests passed) Arcade / Graphs / 3 In the Pseudoforest / 18 Is Wood Magical --- .../18_Is_Wood_Magical /main.py | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Arcade/Graphs/3_In_the_Pseudoforest/18_Is_Wood_Magical /main.py diff --git a/Arcade/Graphs/3_In_the_Pseudoforest/18_Is_Wood_Magical /main.py b/Arcade/Graphs/3_In_the_Pseudoforest/18_Is_Wood_Magical /main.py new file mode 100644 index 0000000..d68309d --- /dev/null +++ b/Arcade/Graphs/3_In_the_Pseudoforest/18_Is_Wood_Magical /main.py @@ -0,0 +1,45 @@ +def colorGraph(n, G, color, pos, c): + if color[pos] != -1 and color[pos] != c: + return False + + # color this pos as c and all its neighbours and 1-c + color[pos] = c + ans = True + for i in range(0, n): + if i in G[pos]: + if color[i] == -1: + ans &= colorGraph(n, G, color, i, 1-c) + + if color[i] != -1 and color[i] != 1-c: + return False + + if not ans: + return False + + return True + + +def isBipartite(n, G): + color = [-1] * n + + #start is vertex 0 + pos = 0 + # two colors 1 and 0 + return colorGraph(n, G, color, pos, 1) + + +def solution(n, wmap): + wmap_new_form = { i: set() for i in range(n) } + for arc in wmap: + wmap_new_form[arc[0]].add(arc[1]) + wmap_new_form[arc[1]].add(arc[0]) + return isBipartite(n, wmap_new_form) + + +n = 5 +G = [[1, 2], [1, 3], [1, 4], [0, 2], [4, 0]] +print(solution(n, G)) # True + +n = 5 +G = [[1, 2], [1, 3], [1, 4], [0, 2], [4, 0], [1, 0]] +print(solution(n, G)) # False