class Solution {public:bool visited[20];void init(){for(int i=0;i<20;i++)visited[i]=false;}int firstarc(vector<vector<int>>& graph,int v){//返回v相邻的第一个结点int p=-1;if(graph[v].size()>0)//如果与v相邻有结点则返回第一个结点,没有返回-1p=graph[v][0];return p;}int nextarc(vector<vector<int>>& graph,int v,int p){for(int i=0;i<graph[v].size();i++){//如果v结点相邻的结点p不是最后一个,则返回下一个结点if(graph[v][i]==p&&i<graph[v].size()-1)return graph[v][i+1];}return -1; //如果v结点相邻的结点p是最后一个,则返回-1;}vector<vector<int>> result;void find_path(vector<vector<int>>& graph,int start,int end,vector<int>& path){path.push_back(start);visited[start]=true;if(start==end){//找到一条路径则输出result.push_back(path);}int p;p=firstarc(graph, start);//找到start第一个相邻结点while(p>=0){if(visited[p]==false){//如果顶点p未访问,递归访问它find_path(graph,p,end,path);}p=nextarc(graph,start,p);//p指向start的下一个相邻结点}path.pop_back();visited[start]=false;//恢复环境,使该节点可重新使用}vector<vector<int>> allPathsSourceTarget(vector<vector<int>>& graph) {vector<int> path;init();find_path(graph,0,graph.size()-1,path);//dfs搜索所有路径,此处0到n-1的所有简单路径return result;}
};

输出从顶点Vi到Vj的所有简单路径相关推荐

  1. 4.6设计一个算法判断图G中从顶点u到v是否存在简单路径

    1. 题目描述 假设图G采用邻接表存储,设计一个算法判断图G中从顶点u到v是否存在简单路径 所谓简单路径是指路径上的顶点不重复.可采用深度优先遍历的方法 #include <bits/stdc+ ...

  2. 【数据结构】-图-输出顶点u到v的所有简单路径

    简单路径:路径上没有重复节点--深度搜索 思路:一步一步递归向下走,以下面这个图为例,详细的递归过程如下所示: 编程注意事项: 1.path数组少为开大一点,避免越界 2.一定记得返回之前要把visi ...

  3. 第12周 项目4-输出从顶点u到v的所有简单路径

    问题及描述: #ifndef GRAPH_H_INCLUDED #define GRAPH_H_INCLUDED #define MAXV 100 //最大顶点个数 #define INF 32767 ...

  4. 采用邻接表存储结构,编写一个判别无向图中任意给定的两个顶点之间是否存在一条长度为k的简单路径的算法。

    以邻接表存储的有向图中是否存在有顶点Vi到Vj顶点的路径(i!=j). 问题描述:试基于图的深度优先搜索策略编写一程序,判别以邻接表存储的有向图中是否存在有顶点Vi到Vj顶点的路径(i!=j). 输入 ...

  5. 分别采用深度优先遍历和广度优先遍历判断是否存在由vi到vj的路径,图用邻接表存储

    分析:         采用深度优先:我们从vi顶点开始进行深度遍历,若存在路径则必然可以走到vj顶点处:         采用广度优先:同样从vi顶点开始进行广度遍历,若存在则必然可以走到vj顶点处 ...

  6. 第十二周项目四----利用遍历思想求解图问题之输出简单路径

    /*烟台大学计算机与控制工程学院 时间2015年12月14日 作者:孙潇 问题描述:假设图G采用邻接表存储,分别设计实现以下要求的算法,要求用区别于示例中的图进行多次测试,通过观察输出值,掌握相关问题 ...

  7. 图10——判断顶点u和顶点v是否存在简单路径

    已有邻接表表示的有向图,编程判断从顶点u到顶点v是否存在简单路径若有,则打印出该路径上的顶点.要求先描述图中的存储结构,并简述算法思路:查找邻接顶点等图运算要自己实现(尽量采用非递归算法) [分析] ...

  8. _DataStructure_C_Impl:求图G中从顶点u到顶点v的一条简单路径

    #pragma once #include<stdio.h> #include<stdlib.h> #define StackSize 100 typedef int Data ...

  9. 数据结构习题——输出从u到v所有简单路径

    前言 这道题开始一直不太理解,记录下来,水平有限,有错误请斧正. 正文 题目 输出从u到v所有简单路径 f是得到下一个firstarc的意思,next是下一个nextarc,黑色弧线代表递进,蓝色弧线 ...

最新文章

  1. 找不到org.springframework.dao.support.DaoSupport的类文件
  2. Codeforces 458C - Elections
  3. 三千多天之前我没有编辑完的技术文档
  4. java jtable不可编辑_java – 使JTable单元不可编辑
  5. 跨服务器查询信息的sql
  6. 【leetcode刷题笔记】单调栈
  7. Linux中grep命令查找文件,Linux中使用grep命令搜索文件名及文件内容的方法
  8. CMake实践(2)
  9. Mac本换ssd注意事项
  10. 二代USBKey介绍
  11. python小学口算题库生成器_PrimarySchoolMathematics
  12. opencv-python学习笔记(十一)—— 图像处理之图像直方图
  13. 如何调整照片大小kb?将照片缩小到指定的kb方法?
  14. 《赛博朋克2077》安装方法+使用手册。附补丁更新地址
  15. 美国国防部的电子邮箱系统
  16. 渗透测试之SQL注入
  17. Vue全家桶系列之Vuex(一)
  18. 5V变3.3V好用的电源芯片
  19. 基于vlc的unity3d vr视频播放器开发,简述
  20. 主板开启网络唤醒_远程开机_网络唤醒设置方法 (WOL, Wake on Lan)

热门文章

  1. MyBatisPlus 开启事务并交由 Springboot 管理
  2. Java基础系列28-常用api之包装类
  3. 0.1 Typora 文档备份
  4. 如何在AD中导入CAD画的DXF/DWG文件?
  5. C语言如何做出简易贪食蛇
  6. 渗透测试流程 - 渗透测试的9个步骤
  7. 摄像头拍照及解析QR二维码
  8. 如何给VS2015安装MSDN本地帮助文档 - 完整教程
  9. Python每日一记192计算机组成原理之存储器存取周期、存储器带宽
  10. unity实现点线智能连接+1