[CareerCup] 4.2 Route between Two Nodes in Directed Graph 有向图中两点的路径

简介:

4.2 Given a directed graph, design an algorithm to find out whether there is a route between two nodes.

LeetCode和CareerCup中关于图的题都不是很多,LeetCode中只有三道,分别是Clone Graph 无向图的复制Course Schedule 课程清单 和 Course Schedule II 课程清单之二。目前看来CareerCup中有关图的题在第四章中仅此一道,这是一道关于有向图的题,书中是用java来做的,我们用c++来做时要定义图和节点,这里参考了之前那道Clone Graph 无向图的复制中关于无向图的定义,并且在里面加入了一个枚举类变量state,来帮助我们遍历。这种找两点之间路径的题就是遍历的问题,可以用BFS或DFS来解,先来看BFS的解法,如下所示:

//Definition for directed graph.
enum State {
    Unvisited, Visited, Visiting
};
struct DirectedGraphNode {
   int label;
   State state;
   vector<DirectedGraphNode *> neighbors;
   DirectedGraphNode(int x) : label(x) {};
};
struct DirectedGraph {
    vector<DirectedGraphNode*> nodes;
};
class Solution {
public:
    bool search(DirectedGraph *g, DirectedGraphNode *start, DirectedGraphNode *end) {
        queue<DirectedGraphNode*> q;
        for (auto a : g->nodes) a->state = Unvisited;
        start->state = Visiting;
        q.push(start);
        while (!q.empty()) {
            DirectedGraphNode *node = q.front(); q.pop();
            for (auto a : node->neighbors) {
                if (a->state == Unvisited) {
                    if (a == end) return true;
                    else {
                        a->state = Visiting;
                        q.push(a);
                    }
                }
            }    
            node->state = Visited;
        }
        return false;
    }
};

本文转自博客园Grandyang的博客,原文链接:有向图中两点的路径[CareerCup] 4.2 Route between Two Nodes in Directed Graph ,如需转载请自行联系原博主。

相关文章
|
存储 安全 Shell
【Shell 命令集合 系统设置 】⭐⭐⭐Linux 更改用户密码 passwd命令 使用指南
【Shell 命令集合 系统设置 】⭐⭐⭐Linux 更改用户密码 passwd命令 使用指南
308 0
|
存储 人工智能 搜索推荐
【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 27页论文及实现代码
本文介绍了2023年第十一届泰迪杯数据挖掘挑战赛C题的解决方案,详细阐述了如何构建泰迪内推平台的招聘与求职双向推荐系统,包括数据收集、分析、画像构建、岗位匹配度和求职者满意度模型的建立,以及履约率最优化的推荐模型,提供了27页的论文和实现代码。
253 0
【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 27页论文及实现代码
|
Python
好教程推荐系列:力扣《Python Cookbook 3rd Edition》和《LeetCode Cookbook》
好教程推荐系列:力扣《Python Cookbook 3rd Edition》和《LeetCode Cookbook》
1105 0
|
JavaScript API 开发者
uni-app开发常用操作速查记录
记录一下uni-app中常用的使用方法或是操作步骤,方便后期速查使用.
uni-app开发常用操作速查记录
|
文字识别
薅羊毛!5种方式免费下载百度文库
百度文库,应该可以称得上百度系为数不多良心产品之一。
薅羊毛!5种方式免费下载百度文库
|
机器学习/深度学习 存储 人工智能
人工智能基础:人工智能云服务(Alaas)介绍
人工智能云服务(AI as a Service )是目前主流的人工智能平台的服务方式,它会把几个常见的人工智能服务进行准确划分,并通过云端提供单独或者打包的服务。模式类似于WordPress中的博客有很多在线的插件,用户可以根据自己的需要免费或者付费的方式下载并安装自己需要的博客插件。国内常见的案例有阿里云、华为云、腾讯云、百度云都有自己的人工智能服务平台。
人工智能基础:人工智能云服务(Alaas)介绍
|
传感器 人工智能 资源调度
优必选悟空机器人正式亮相:全新个人 AI 机器人时代要降临了?!
“悟空 悟空,给我来一段劲嗨的舞蹈!” 通过这样的语音指令,“悟空”就会唱起歌,跳起舞来。
1413 0
优必选悟空机器人正式亮相:全新个人 AI 机器人时代要降临了?!
|
安全 API iOS开发
苹果ATS(强制HTTPS)审核新政解码
1. ATS App Transport Security(ATS) 是Apple为增强iOS App网络通信安全提出的安全功能,适用于iOS App和App Extension;在启用ATS之后,它会强制应用通过HTTPS(而不是HTTP)连接网络服务。 WWDC 2016上提出,2016
30410 0
桌面美化
软件:rainmeter 如何下载在哪儿下载雨滴(Rainmeter)皮肤?   在使用雨滴桌面时,我们需要各种各样的皮肤,那么我们该如何下载从哪里下载?才开始使用Rainmeter时我也遇到这些问题,通过长时间的搜索以及整理,我总结了一些方法,下面就跟大家一起分享。
1100 1