无权图的单源最短路算法

原创 2018年04月15日 10:37:59

思路是广度优先搜索,每次记录路径和距离

#include<stdio.h>
#include<stdlib.h>
#include <string.h>
#include <string>
#include <iostream>
#include <stack>
#include <math.h>
#include <algorithm>
#include <iomanip>
#include <vector>
#include <map>
#include <string>
#include <stdlib.h>
#include <vector>
#include <queue>
#include <functional>
using namespace std;
vector <int> graph[8];//邻接表
int dist[8];//最短距离
int path[8];//路径
queue<int> q;
stack<int> s;
void unweighted()
{
    q.push(1);
    dist[1] = 0;
    path[1] = 0;
    while(!q.empty())
    {
        int now = q.front();
        q.pop();
        for(int i=0; i<graph[now].size(); i++)
        {
            if(dist[graph[now][i]]==-1)
        {
            dist[graph[now][i]] = dist[now]+1;
            path[graph[now][i]] = now;
                q.push(graph[now][i]);
        }

        }
    }
}
int main()
{
    graph[1].push_back(2);
    graph[1].push_back(4);
    graph[2].push_back(4);
    graph[2].push_back(5);
    graph[3].push_back(1);
    graph[3].push_back(6);
    graph[4].push_back(3);
    graph[4].push_back(5);
    graph[4].push_back(6);
    graph[4].push_back(7);
    graph[5].push_back(7);
    graph[7].push_back(6);
    memset(dist,-1,sizeof(dist));
    memset(path,0,sizeof(path));
    unweighted();
    int i=6;
    while(i!=0)
    {
        s.push(i);
        i = path[i];
    }
    while(!s.empty())
    {
        cout<<s.top()<<"->";
        s.pop();
    }
    cout<<endl;
    for(int i=1;i<=7;i++)
        cout<<dist[i]<<endl;
    return 0;

}

无权图的单源最短路问题

最短路径问题的抽象 在网络中,求两个不同顶点之间的所有路径中,边的权值之和最小的那一条路径 这条路径就是两点之间的最短路径(Shortest Path) 第一个顶点为源点(Source) 最后一个顶点...
  • lafengxiaoyu
  • lafengxiaoyu
  • 2016-12-08 10:39:10
  • 762

有权图的单源最短路算法

有权图的单源最短路亦被称为Dijkstra算法(单源最短路径),首先要声明这个算法无法解决含有负值圈的图 算法步骤如下: G={V,E} 1. 初始时令 S={V0},T=V-S={其余顶点},T中...
  • lafengxiaoyu
  • lafengxiaoyu
  • 2016-12-08 22:08:10
  • 611

【算法】单源最短路——SPFA

单源最短路除了dijkstra算法之外,还有一种常用的算法叫做SPFA(shortest path faster algorithm)算法,不同于dijkstra的复杂度为o(n^2),SPFA算法的...
  • CFhM_R
  • CFhM_R
  • 2016-03-02 22:52:03
  • 514

【图论】单源点最短路模板(有向图)Dijkstra

#include #include #include #include #include #include using namespace std; const int MAXN = 50...
  • JeremyGJY
  • JeremyGJY
  • 2016-03-09 13:49:20
  • 664

Floyd Dijkstra Bellman-Ford spfa 四种最短路经典算法汇总 HDU 2544为例

求单源最短路径,本文包括了Floyd, Dijkstra, Bellman-Ford, Spfa算法。
  • Mrx_Nh
  • Mrx_Nh
  • 2017-03-25 21:20:46
  • 521

【算法】单源最短路——Dijkstra

对于固定起点的最短路算法,我们称之为单源最短路算法。单源最短路算法很多,最常见的就是dijkstra算法。 dijkstra主要用的是一种贪心的思想,就是说如果i...s...t...j是最短路,那么...
  • CFhM_R
  • CFhM_R
  • 2016-03-01 23:36:20
  • 1243

算法学习之Dijkstra单源最短路问题

一.问题描述 给定一个图,请找出一号点到其它点的最短路径 二.输入样例 6 9 1 2 1 1 3 12 2 3 9 2 4 3 3 5 5 4 3 4 4 5 13 4 6 15 5 6 4 三....
  • u013555159
  • u013555159
  • 2016-03-14 18:59:05
  • 385

迪克特斯拉最短路算法的C实现

迪克特斯拉最短路算法的C实现,简单可以通过编译
  • ACHPXYZ
  • ACHPXYZ
  • 2017-04-22 22:53:38
  • 450

无权最短路径BFS(广度优先搜索)算法(图论)

广度优先搜索(BFS)算法类似于树中的层次搜索:从任意点s出发,先遍历与s相邻的点,然后再遍历于相邻的点相邻的点。注意有向图必须是顺方向的邻接点。 为什么说广度优先搜索可以用来求无权最短路径呢?因为...
  • njujames
  • njujames
  • 2010-10-13 17:06:00
  • 9626

带权区间图的最短路算法

  • 2009年04月22日 19:53
  • 99KB
  • 下载
收藏助手
不良信息举报
您举报文章:无权图的单源最短路算法
举报原因:
原因补充:

(最多只允许输入30个字)