当前位置:   article > 正文

Leetcode题解——DFS+染色问题_leetcode 01染色问题

leetcode 01染色问题

涉及到的题目:

886. 可能的二分法

785. 判断二分图

https://blog.csdn.net/qq_21201267/article/details/105294270

此类题目的关键在于构建图,然后将一条边上两个点着不同的颜色,当着色方案为2种颜色时,即为所说的二分图问题。

886. 可能的二分法

  1. class Solution:
  2. def possibleBipartition(self, N: int, dislikes: List[List[int]]) -> bool:
  3. color = {}
  4. graph = collections.defaultdict(set)
  5. for i,j in dislikes:
  6. graph[i].add(j)
  7. graph[j].add(i)
  8. def dfs(i):
  9. nei = graph[i]
  10. for j in nei:
  11. if j not in color:
  12. color[j] = color[i] ^ 1
  13. if not dfs(j): return False
  14. elif color[j] == color[i]:
  15. return False
  16. return True
  17. for i in range(1,N+1):
  18. if i not in color:
  19. color[i] = 0
  20. if not dfs(i): return False
  21. return True

785. 判断二分图

DFS版本:

  1. class Solution(object):
  2. def isBipartite(self, graph):
  3. """
  4. :type graph: List[List[int]]
  5. :rtype: bool
  6. """
  7. n = len(graph)
  8. visited = [-1] * n
  9. for i in range(n):
  10. if visited[i] == -1:
  11. if not self.dfs(graph, i, 0, visited):
  12. return False
  13. return True
  14. def dfs(self, graph, v, color, visited):
  15. visited[v] = color
  16. for i in graph[v]:
  17. if visited[i] == -1:
  18. if not self.dfs(graph, i, 1 - color, visited):
  19. return False
  20. elif visited[i] == color:
  21. return False
  22. return True

BFS版本:

  1. class Solution(object):
  2. def isBipartite(self, graph):
  3. n = len(graph)
  4. visited = [-1] * n
  5. for i in range(n):
  6. if visited[i] == -1:
  7. if not self.bfs(graph, i, 0, visited):
  8. return False
  9. return True
  10. def bfs(self, graph, v, color, visited):
  11. visited[v], queue = color, [v]
  12. while queue:
  13. node = queue.pop(0)
  14. for i in graph[node]:
  15. if visited[i] == -1:
  16. visited[i] = 1 - visited[node]
  17. queue.append(i)
  18. elif visited[i] == visited[node]:
  19. return False
  20. return True

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/477089
推荐阅读
相关标签
  

闽ICP备14008679号