我正在使用python解决问题BUGLIFE。我只需要在图的所有组件中进行BFS遍历,并适当地为节点着色。 这是我在python中编写的代码,我不知道,为什么我在这里得到WA(错误的答案):
def bfs(graph, start, visited=set()):
queue = [start]
A, C = set(), set()
while queue:
node = queue.pop(0)
if node not in visited:
visited.add(node)
queue.extend(graph[node] - visited)
# color nodes
if node in A:
C = C.union(graph[node])
elif node in C:
A = A.union(graph[node])
else:
A.add(node)
C = C.union(graph[node])
if A.intersection(C):
return 0
if len(visited) == len(graph):
return 1
else:
for vertex in (set(graph) - visited):
return bfs(graph, vertex, visited)
S = int(raw_input())
for s in range(1, S+1):
B, I = map(int, raw_input().split())
graph = {}
for bug in range(1, B+1):
graph.update({bug: set()})
for interaction in range(I):
x, y = map(int, raw_input().split())
graph[x].add(y)
graph[y].add(x)
result = bfs(graph, 1)
print('Scenario #%d:' % s)
if result:
print('No suspicious bugs found!')
else:
print('Suspicious bugs found!')
这是作业:
Hopper教授正在研究一种罕见的虫子的性行为。他假设他们有两种不同的性别,他们只与异性的错误相互作用。在他的实验中,个别错误及其相互作用很容易识别,因为数字印在他们的背上。
给出一个bug交互列表,确定实验是否支持他假设两个性别没有同性恋错误,或者它是否包含一些错误的错误交互。
输入
输入的第一行包含场景数。每个场景以一行给出,给出了由单个空格分隔的错误数(至少一个,最多2000个)和交互数(最多1000000)。在以下行中,每个交互以两个不同的错误号的形式给出,由单个空格分隔。错误从一开始连续编号。
输出
每个场景的输出都是包含“Scenario #i:”的行,其中i是从1开始的场景编号,后面跟着一行说“找不到可疑错误!”如果实验符合如果Hopper教授的假设肯定是错误的,那么他就错误的性行为或“发现可疑的错误!”的假设。
实施例
输入:
2 3 3 1 2 2 3 1 3 4 2 1 2 3 4
输出:
Scenario #1: Suspicious bugs found! Scenario #2: No suspicious bugs found!