c_cpp 来自顶点的给定长度的所有路径

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 来自顶点的给定长度的所有路径相关的知识,希望对你有一定的参考价值。

#include <bits/stdc++.h>
using namespace std;

class graph {
    int v;
    int **adj;
public:
    graph (int v) {
        this->v= v;
        adj= new int*[v];
        for (int i=0; i<v; i++)
            adj[i]= new int [v];
        for (int i=0; i<v; i++)
            for (int j=0; j<v; j++)
                adj[i][j]= 0;
    }
    void addEdge (int u, int w) {
        adj[u][w]=1;
        adj[w][u]=1;
    }
    void dfs(int, bool [], vector <int> , int );
};
void graph::dfs (int s, bool visited[], vector <int> ans, int k) {
    if (k<0) {
        for (int i=0;i<ans.size();i++)
            cout<< ans[i]<< " ";
        cout<< "\n";
        return;
    }
    visited[s]= 1;
    ans.push_back(s);
    for (int i=0;i<v;i++)
        if (adj[s][i] && !visited[i])
            dfs(i, visited, ans, k-1);
    visited[s]= 0;
}
int main() {
    int n, m;
    cin>>n>>m;
    graph g(n);
    for (int i=0;i<m;i++) {
        int a, b;
        cin>> a>>b;
        g.addEdge(a,b);
    }
    int k= 4;
    bool visited[n]= {0};
    vector <int> ans;
    g.dfs (0, visited, ans, k);
}

以上是关于c_cpp 来自顶点的给定长度的所有路径的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 如果来自源的路径长度超过k

计算无向图中有约束的所有一对顶点

贪心算法初探3——最短路径(Dijkstra算法)

在给定起始顶点和深度限制的循环定向图中寻找所有可能的路径。

c_cpp 给定二叉树和求和,找到所有根到叶路径,其中每个路径的总和等于给定的总和

c_cpp 任何一对顶点之间的最长路径