首页 > 其他分享 >朴素Dijkstra

朴素Dijkstra

时间:2022-11-10 20:12:28浏览次数:43  
标签:int 枚举 Dijkstra dijkstra 朴素 dis

   朴素dijkstra其实就是数据结构学的,很简单。

   朴素dijkstra算法就是暴力枚举n个点,每次枚举找到离本次枚举点最近的点a,然后用点a来更新所有其他点的距离

void dijkstra()
{
    memset(dis,0x3f,sizeof dis);  
    dis[1]=0;
    for(int i=0;i<n;i++)    //迭代n次
    { 
        int t=-1;     //表示还没有确定
        for(int j=1;j<=n;j++)  //遍历所有点
        //找到还没有确定的点中 距离最近的那个赋给t
            if(!st[j] && (t==-1||dis[t]>dis[j])) t=j;

        //if(t==n) break;  //提前找到可以退出
        st[t]=true;
        //用t来更新其他点的距离
        for(int j=1;j<=n;j++)
            dis[j]=min(dis[j],dis[t]+g[t][j]);
    }

}

最后dist[] 存的就是1号点到所有点的最短距离(本身到本身为0)。

一般不用这个时间复杂度太高,用堆优化版。

 

标签:int,枚举,Dijkstra,dijkstra,朴素,dis
From: https://www.cnblogs.com/-Rebecca/p/16878604.html

相关文章