https://leetcode-cn.com/problems/route-between-nodes-lcci/

节点间通路。给定有向图,设计一个算法,找出两个节点之间是否存在一条路径。

示例1:

输入:n = 3, graph = [[0, 1], [0, 2], [1, 2], [1, 2]], start = 0, target = 2
输出:true
示例2:

输入:n = 5, graph = [[0, 1], [0, 2], [0, 4], [0, 4], [0, 1], [1, 3], [1, 4], [1, 3], [2, 3], [3, 4]], start = 0, target = 4
输出 true

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/route-between-nodes-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

DFS 深度优先搜索:(使用dfs函数递归)

class Solution {
public:
void dfs(vector<vector<int>>& neighbor,vector<int>& visit, int node, int target, int& mark)
{
//cout<<"node:"<<node<<endl;
if(mark==1)
return ; visit[node] = 1;
for(auto& i:neighbor[node])
{
if(i==target)
{
mark=1;
return;
}
else
dfs(neighbor,visit, i, target, mark);
}
visit[node] = 0;
return ; } bool findWhetherExistsPath(int n, vector<vector<int>>& graph, int start, int target) {
vector<vector<int>> neighbor(n);
for(auto& i:graph)
neighbor[i[0]].push_back(i[1]); vector<int> visit(n,0); int mark = 0; dfs(neighbor,visit, start, target, mark); if(mark==1)
return true;
else
return false; }
};

BFS广度优先搜索:(使用队列queue)

class Solution {
public: bool findWhetherExistsPath(int n, vector<vector<int>>& graph, int start, int target) {
vector<vector<int>> neighbor(n);
for(auto& i:graph)
neighbor[i[0]].push_back(i[1]); vector<int> visit(n,0); int mark = 0;
queue<int> q;
q.push(start); while(!q.empty() && mark==0)
{
int node = q.front();
q.pop();
for(auto& i:neighbor[node])
{
if(i==target)
{
mark=1;
break;
}
else
q.push(i);
}
} if(mark==1)
return true;
else
return false; }
};

最新文章

  1. 代码的坏味道(10)——发散式变化(Divergent Change)
  2. sh 自动化安装配置FTP服务器
  3. 从零开始山寨Caffe&#183;壹:仰望星空与脚踏实地
  4. secureCRT的一些小知识
  5. Retrieve失败解决办法一例
  6. Privacy Policy
  7. iOS进阶学习-数据库
  8. MySQL安装(图文详解)
  9. linux传送文件至服务器
  10. [OC Foundation框架 - 2] NSString 的创建
  11. Camera实现预览、拍照
  12. Mysql文件太大导入失败解决办法总结
  13. JSON以及Java转换JSON的方法(前后端常用处理方法)
  14. hidden,display,visibility ,jQuery中的hide()区别
  15. Mysql 索引之B+tree
  16. 基于SRS+OBS搭建直播系统
  17. Potplayer播放器使用笔记
  18. Vim的合并行操作
  19. 关于QT Graphics View开启OpenGL渲染后复选框、微调框等无法正常显示的问题
  20. python argparse(参数解析)模块学习(一)

热门文章

  1. ThreadPoolExecutor源码分析-面试问烂了的Java线程池执行流程,如果要问你具体的执行细节,你还会吗?
  2. v-echarts安装
  3. windows下mysql的远程访问和权限设置
  4. 阿里面试官:小伙子,给我说一下Spring 和 Spring Boot 的区别吧
  5. 关于oracle11g 和sqldeverloper的安装配置
  6. Guitar Pro教程之理解记谱法
  7. Ayoa:麻雀虽小、五脏俱全的思维导图工具
  8. [LGOJ1273]有线电视网
  9. 写代码有这16个好习惯,可以减少80%非业务的bug
  10. otter搭建