返回

1971. 寻找图中是否存在路径————附带详细代码

发布时间:2023-02-15 19:14:11 285
# edge# ios

0 结果

请添加图片描述

1 题目

在这里插入图片描述

2 思路

使用DFS算法(深度遍历算法),仅加入源点,然后使用DFS从该点遍历,如果途中遍历到目的点,那就说明源点到目的点存在路径。

3 代码

#include 
#include 
#include 
using namespace std;

class Solution {
public:
    bool validPath(int n, vector>& edges, int source, int destination) {
        bool vis[n];
        std::fill(vis, vis + n, 0);
        //邻接矩阵
//        int G[n + 1][n + 1];//测试值有5000
//        std::memset(G, 0, sizeof(G));
//        for(int i = 0;i < edges.size();i++){
//            int u = edges[i][0];
//            int v = edges[i][1];
//            G[u][v] = 1;
//            G[v][u] = 1;
//        }
        //邻接表
        vector G[n];
        for (int i = 0;i < edges.size();i++){
            int u = edges[i][0];
            int v = edges[i][1];
            G[u].push_back(v);
            G[v].push_back(u);
        }

        bool isFind = false;
        auto DFS = [&vis, &G, &isFind, destination, n](int u, int depth)->void {
            auto f = [&](auto&& self, int u, int depth)->void {
                if(u == destination){
                    isFind = true;
                    return ;
                }
                vis[u] = true;
//                for(int v = 0;v < n;v++){//邻接矩阵
//                    if(vis[v] == false && G[u][v] != 0){
//                        self(self, v, depth + 1);
//                    }
//                }
                for(int i = 0;i < G[u].size();i++){//邻接表
                    int v = G[u][i];
                    if(vis[v] == false){
                        self(self, v, depth + 1);
                    }
                }

            };
            return f(f, u, depth);
        };

        DFS(source, 0);

        return isFind;
    }
};

测试代码:

    vector> edges{{0,7}, {0,8}, {6,1}, {2,0}, {0,4}, {5,8}, {4,7}, {1,3}, {3,5}, {6,5}};
//    vector> edges{{0,1}, {1,2}, {2,0}};
//    vector> edges{{0,1}, {0,2}, {3,5}, {5, 4}, {4,3}};
    Solution s;
    cout<
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线