图的dfs,bfs(dfs用于求最短路径)

图的最短路径
dfs:

public:
    //shortest为最短路径 edge[100][100]初始化一个二维数组作为路线值
    //matrix作为记录是否访问过
    int shortest,edge[100][100],n,m,en,matrix[i];
    void dfs(int cur,int dst){
        if(shortest<dst){return;}
        if(cur==en){
            if(shortest>dst){
                shortest = dst;
                return;
            }
        }
        for(int i=0;i<=n;i++){
            if(mark[i]==0&&edge[cur][i]!=INT_MAX&&edge[cur][i]!=0){
                mark[i]=1;
                dfs(i,dst+edge[cur][i]);
                mark[i]=0;
            }
        }
        return;

    }

bfs:

public:
    int shortest=0,edge[100][100],n,m,en,matrix[i];
    void bfs(){
        queue<int> q;
        q.push(1);
        matrix[1]=1;
        while(!q.empty()){
            int v = q.front();
            for(int i=1;i<=n;i++){
                if(matrix[i]==0&&edge[v][i]!=INT_MAX&&edge[v][i]!=0){
                    q.push(i);
                    matrix[i]=1;
                }
            }
            cout<<v<<endl;
            q.pop();
        }

    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容