zoukankan      html  css  js  c++  java
  • Dijkstra基本思路(感觉和Prim非常类似)

    起点v;

    vis[]数组表示某个点是否被访问过;初始全为0;

    cls[]数组表示当前集合到其余集合最近的距离;初始全为max;

    map[][]数组表示图的邻接矩阵;对角线为0;

    ===================================

     1 void Dijkstra(int v)
     2 {
     3     int i,j,min,nxt;
     4 
     5     for(i=1;i<=n;i++)    cls[i]=map[v][i];//先用v到邻接点的距离初始化cls
     6     memset(vis,0,sizeof(vis));//访问标志全部置0
     7     vis[v]=1;//起点访问标志置1
     8 
     9     for (i=1;i<n;i++)
    10     {
    11         min=MAX;
    12         nxt=v;
    13         //找出离集合最近的那个点nxt,以及该点到集合的距离min;
    14         for (j=1;j<=n;j++)
    15         {
    16             if(!vis[j]&&cls[j]<min)
    17             {
    18                 nxt=j;
    19                 min=cls[j];
    20             }
    21         }
    22         vis[nxt]=1;
    23         //更新cls数组
    24         for (j=1;j<=n;j++)
    25         {//j点没有被访问过,j点和nxt点之间有通路,nxt点到j点的距离+集合到nxt的距离<集合到j的距离
    26             if(!vis[j]&&map[nxt][j]<MAX&&(cls[nxt]+map[nxt][j])<cls[j])
    27                 cls[j]=cls[nxt]+map[nxt][j];
    28         }
    29     }
    30 }

      

    字节跳动内推

    找我内推: 字节跳动各种岗位
    作者: ZH奶酪(张贺)
    邮箱: cheesezh@qq.com
    出处: http://www.cnblogs.com/CheeseZH/
    * 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    memcached全面剖析
    Zabbix中文使用手册
    lombok
    guava cache
    linux 文件检索操作
    mysql慢查询
    碎片脚本注解(后续整理)
    Docker 目录挂载详述
    jenkins 添加 sonraqube java&vue项目记录
    Ansible unarchive模块
  • 原文地址:https://www.cnblogs.com/CheeseZH/p/2519429.html
Copyright © 2011-2022 走看看