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

如何判断有向图中两顶点x与y间是否存在路径?附代码片段

判断有向图中两顶点是否存在路径的C++代码片段

这是一段用来实现有向图中两个顶点间路径存在性判断的C++代码,不过看起来核心方法isGRoad里的遍历逻辑还没写完:

#include<iostream>
#include <list>
using namespace std;
class Graf {
private:
    int Vf;
    list<int> *adj;
public:
    // Constructor
    Graf(int Vf) {
        this->Vf = Vf;
        adj = new list<int>[Vf];
    }
    void addEdge(int vf, int w) // 添加从vf指向w的有向边
    {
        adj[vf].push_back(w);
    }
    bool isGRoad(int first, int second) {
        if (first == second) // 起始顶点和目标顶点相同的特殊情况
            return true;
        bool *visited = new bool[Vf];
        for (int i =... // 此处的遍历初始化与搜索逻辑未完成
    }
};

简单拆解下这段代码的设计思路:

  • 采用邻接表(list<int> *adj)存储有向图,这种结构对稀疏图的空间利用率更高
  • 构造函数负责初始化顶点总数和邻接表数组
  • addEdge方法用来添加有向边,把目标顶点w加入到起始顶点vf的邻接列表中
  • isGRoad是实现路径判断的核心方法:
    1. 先处理最直接的特殊情况:如果起始和目标顶点是同一个,直接返回true
    2. 创建visited数组用来标记已访问的顶点,避免遍历过程中陷入循环
    3. 后续原本应该通过DFS(深度优先搜索)或BFS(广度优先搜索)从first出发遍历,检查是否能抵达second,但这部分代码还未完成

内容的提问来源于stack exchange,提问作者dxerok

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:15:10