lintcode-176-图中两个点之间的路线
176-图中两个点之间的路线
给出一张有向图,设计一个算法判断两个点 s 与 t 之间是否存在路线。
样例
如下图:
for s = B and t = E, return true
for s = D and t = C, return false标签
Cracking The Coding Interview 深度优先搜索 宽度优先搜索
思路
从 s 点开始对图进行遍历,若可以遍历到 t ,则 s 与 t 之间是否存在路线
这里使用了图的宽度优先遍历
code
/**
* Definition for Directed graph.
* struct DirectedGraphNode {
* int label;
* vector<DirectedGraphNode *> neighbors;
* DirectedGraphNode(int x) : label(x) {};
* };
*/
class Solution {
public:
/**
* @param graph: A list of Directed graph node
* @param s: the starting Directed graph node
* @param t: the terminal Directed graph node
* @return: a boolean value
*/
bool hasRoute(vector<DirectedGraphNode*> graph,
DirectedGraphNode* s, DirectedGraphNode* t) {
// write your code here
int size = graph.size(), i = 0;
if (size <= 0) {
return false;
}
queue<DirectedGraphNode*> queue;
map<DirectedGraphNode*, bool> map;
for (i = 0; i < size; i++) {
map[graph[i]] = false;
if (s == graph[i]) {
queue.push(graph[i]);
}
}
while (!queue.empty()) {
DirectedGraphNode* node = queue.front();
queue.pop();
map[node] = true;
if (node == t) {
return true;
}
for (i = 0; i < node->neighbors.size(); i++) {
if (map[node->neighbors[i]] == false) {
queue.push(node->neighbors[i]);
}
}
}
return false;
}
};
lintcode-176-图中两个点之间的路线的更多相关文章
- 在db2中 两个数据库之间的两个表的联合查询
大家好,今天遇到了在db2中 两个数据库之间的两个表的联合查询 我知道oracle中有dblink,可是不知到db2的两个数据库联合查询怎么处理我找了类似于比如两个数据库: db1,db2用户名密码s ...
- Android中两个Activity之间简单通信
在Android中,一个界面被称为一个activity,在两个界面之间通信,采用的是使用一个中间传话者(即Intent类)的模式,而不是直接通信. 下面演示如何实现两个activity之间的通信. 信 ...
- 关于Cocos2d-x中两个场景之间参数的传递
两个场景之间,有的时候要进行参数传递,如果想通过实例化出一个场景,从而得到属性和方法是不对的想法 你有两个场景,第一场景是用户登录界面,第二场景则是你登录后的界面,你如何将用户登录的值传到第二个场景呢 ...
- iOS中两个APP之间的跳转和通信
app间的跳转 一:在第一个app首先要做下面这些操作: 1.在info.plist文件中的Information Property List下添加一项:URL types. 2.点开URL type ...
- WinForm 中两个窗口之间传递数据
方法有很多种,这里介绍项目中使用的两种 一.通过委托+事件的方法进行传值 (点击Form2中的button1按钮,将会把Form2中的textbox.text 传给Form1中的 lable.text ...
- controller中两个方法之间共享一个变量LinkedHashMap
1:引用传递,创建一个变量,给两个线程都传递进去. 2:静态修饰 static 通过该修饰符说明,该变量只有一份, 所有线程共用一份. 例如下面的htmlidMap通过static变量修饰, up ...
- MFC中两个对话框之间数据传递
以下是在网上参考的一篇文章,网址:https://blog.csdn.net/foreverhuylee/article/details/21707197 这里有两种情况, 第一种情况是: (在一个基 ...
- jQuery获取字符串中两个字符之间的字符
//获取@和.之间的字符 var str1 = "laxe@ll.com"; var str2 = str1.substring(str1.indexOf('@')+1,str1. ...
- css 中两个class之间没有空格与有空格有什么区别
第一个匹配: <div class="ul item"></div>:无法匹配:<div class="ul"></d ...
随机推荐
- Lavavel5.5源代码 - RedisQueue是怎么实现
队列的基本功能: 1.立即执行:yes 2.延迟执行:yes 3.保证至少执行一次:yes 4.必须执行且最多执行一次:no 用到的数据结构: list.Sorted sets 延迟执行的机制: 1. ...
- UEditor代码实现高亮显示
在公司开发一个论坛系统,由于用的是UEditor(百度编辑器),单独使用的话,里面的代码不会高亮,网上找了很多,最后决定使用 highlight.js 实现代码高亮显示.效果如下: 这个是我修改其他的 ...
- 树莓派3B+学习笔记:2、更改显示分辨率
1.打开终端,输入 sudo raspi-config 选择第7行: 2.选择第5行: 3.选择一个自己习惯的分辨率(我选择1024X768),确定后重启,VNC会自动连接: 4.更改分辨率完成,方便 ...
- 用树莓派做电视盒子,安装Android TV系统
有位朋友问我,如何在树莓派上安装盒子系统,这期我就教大家如何安装Android系统,自动动手做一个机顶盒. 如何安装系统,我已经在 树莓派安装系统 这篇文章中了做介绍,有需要的请看这篇文章.安装系统需 ...
- 树莓派如何连接WIFI
hello,大家好,我是叶秋! 上一期呢,给大家介绍了如何给树莓派安装系统,有细心的朋友就会发现上一期安装系统的文章漏了一点点知识,不知道机智的你是否有发现呢~~(尴尬
- java 学习知识汇总
一:常见模式与工具 学习Java技术体系,设计模式,流行的框架与组件是必不可少的: 常见的设计模式,编码必备 Spring5,做应用必不可少的最新框架 MyBatis,玩数据库必不可少的组件 二:工程 ...
- NoSQL入门第五天——Java连接与整合操作
一.测试联通 1.新建个web工程 2.导入jar:当然实际使用的时候肯定是通过maven来构建(如果有机会,可以尝试学习gradle进行构建) 3.建个测试类:好久没开eclipse了,希望后面可以 ...
- 20145202马超《java》实验四
实验指导:http://www.cnblogs.com/lxm20145215----/p/5444207.html 实验指导:http://www.cnblogs.com/Vivian517/p/6 ...
- 20145202马超《网络对抗》Exp7 网络欺诈技术防范
本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体有(1)简单应用SET工具建立冒名网站(2)ettercap DNS spoof(3)结合应用两种技术,用DNS spo ...
- tutorials
https://github.com/HadrienG/tutorials https://github.com/galaxyproject/training-material/blob/master ...