You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:24:49