本文主要是介绍代码随想录算法训练营第六十四天|图论、KM98. 所有可达路径,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
代码随想录算法训练营第六十四天
KM98. 所有可达路径
题目链接:KM98. 所有可达路径
#include<iostream>
#include<vector>
using namespace std;vector<int>path;
vector<vector<int>>result;//输入参数为图,开始节点,结束节点
void dfs(const vector<vector<int>>& graph, int x, int n){if(x==n){result.push_back(path);return;}for(int i = 1;i <= n;i++){//找到以x为开头i为结尾的边,收集路径,递归,回溯if(graph[x][i]==1){path.push_back(i);//再找i到n的节点dfs(graph,i,n);path.pop_back();}}};int main(){int N,M;cin>>N>>M;//邻接矩阵法vector<vector<int>>graph(N+1,vector<int>(N+1,0));while(M--){int s,t;cin>>s>>t;graph[s][t] =1;}path.push_back(1);dfs(graph,1,N);//空节点直接返回-1if (result.size() == 0) cout << -1 << endl;//打印结果for(int i = 0;i<result.size();i++){for(int j = 0 ;j<result[i].size();j++){cout<<result[i][j];if(j!=result[i].size()-1){cout<<" ";}}cout<<endl;}return 0;
}
这篇关于代码随想录算法训练营第六十四天|图论、KM98. 所有可达路径的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!