• careercup-树与图 4.2


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

    解答

    根据题意,给定一个有向图和起点终点,判断从起点开始,是否存在一条路径可以到达终点。 考查的就是图的遍历,从起点开始遍历该图,如果能访问到终点, 则说明起点与终点间存在路径。稍微修改一下遍历算法即可。

     使用广度优先遍历实现代码:

    #include<iostream>
    #include<queue>
    #include<cstring>
    using namespace std;
    
    const int n=4;
    bool visited[n];
    queue<int> q;
    
    bool isroute(int matrix[][4],int src,int des)
    {
        int i;
        visited[src]=true;
        q.push(src);
        while(!q.empty())
        {
            int tmp=q.front();
            q.pop();
            for(i=0;i<n;i++)
            {
                if(matrix[tmp][i]&&!visited[i])
                {
                    visited[i]=true;
                    if(visited[des])
                        return true;
                    q.push(i);
                }
            }
        }
        return false;
    }
    
    int main()
    {
        memset(visited,false,sizeof(visited));
        int matrix[n][n]={{0,1,1,1},{1,0,1,0},{1,1,0,1},{1,0,1,0}};
        cout<<isroute(matrix,1,3)<<endl;
    }

    DFS

    #include<iostream>
    #include<queue>
    #include<cstring>
    using namespace std;
    
    const int n=4;
    bool visited[n];
    queue<int> q;
    
    //DFS
    bool isroute(int matrix[][4],int src,int des)
    {
        int i;
        visited[src]=true;
        for(i=0;i<n;i++)
        {
            if(matrix[src][i]&&!visited[i])
                isroute(matrix,i,des);
        }
        return visited[des];
    }
    
    int main()
    {
        memset(visited,false,sizeof(visited));
        int matrix[n][n]={{0,0,0,1},{1,0,1,0},{1,1,0,0},{0,0,0,0}};
        cout<<isroute(matrix,3,1)<<endl;
    }
  • 相关阅读:
    cocos日记
    Android 开发经验
    vbs自学备份
    C# 如何在winform中嵌入Excel,内嵌Excel,word
    win7 64位在线编辑dsoframer控件的安装和使用配置
    C# 正则表达式 最全的验证类
    在 Range 对象中,Min (14)必须小于或等于 max (-1)。
    winform Form窗体和UserControl用户空间嵌入Panel容器并填充
    C# Winform防止闪频和再次运行
    Base64编码解码
  • 原文地址:https://www.cnblogs.com/wuchanming/p/4147880.html
Copyright © 2020-2023  润新知