BFS求所有节点最短距离时向量数组处理异常,图论编程新手求助
新手图论程序求助:输出和测试用例对不上,求大佬帮忙排查!
嘿各位,我是刚入门图论编程的新手,最近在写一个无向图连通分量计数的程序,梳理好逻辑后敲了代码,但跑出来的结果总是和测试用例不匹配,挠头半天找不到问题,麻烦帮忙看看哪里错了😭
问题背景
我要实现的功能是:给定一个用邻接表表示的无向图,计算图里有多少个连通分量。我用了DFS的思路,遍历每个节点,没访问过就启动一次DFS,每启动一次计数加一,逻辑上应该没问题啊,但结果不对。
我的代码
def count_connected_components(graph): visited = set() count = 0 for node in graph: if node not in visited: count += 1 stack = [node] while stack: current = stack.pop() visited.add(current) for neighbor in graph[current]: if neighbor not in visited: stack.append(neighbor) return count # 测试用例的图 test_graph = { 0: [1, 2], 1: [0, 3], 2: [0], 3: [1], 4: [5], 5: [4] } # 运行并打印结果 print("实际输出:", count_connected_components(test_graph))
测试用例与输出情况
- 测试用例说明:这个图有6个节点,分成两个连通分量:0、1、2、3是一个,4、5是另一个。
- 预期输出:
2 - 实际输出:
3
我反复理了DFS的流程,感觉每一步都没问题啊,为什么会多出来一个连通分量呢?是不是我对邻接表的遍历有什么误解?或者visited集合的使用哪里错了?
内容的提问来源于stack exchange,提问作者Lakshay Kakkar
相关产品推荐
相关产品推荐

