• Dijkstra算法 最短路径 (部分)


    void Dijkstra(int n, int v, int *dist, int *prev, int c[maxnum][maxnum])
    {
        bool s[maxnum];       // 判断是否已存入该点到S集合中
        for(int i=1; i<=n; ++i)
        {
            dist[i]=c[v][i]; //dist[i]为节点路劲长度,c[v][i]为点与点之间的路径长度。
            s[i]=0;           // 初始都未用过该点,s[i]为标志数组。
            if(dist[i]==maxint)
                prev[i]=0;
            else
                prev[i]=v;
        }
        dist[v] = 0;
        s[v] = 1;
     
        //依次将未放入S集合的结点中,取dist[]最小值的结点,放入结合S中
        //一旦S包含了所有V中顶点,dist就记录了从源点到所有其他顶点之间的最短路径长度
        for(int i=2; i<=n; ++i)
        {
            int tmp = maxint;
            int u = v;
            // 找出当前未使用的点j的dist[j]最小值
            for(int j=1; j<=n; ++j)
                if((!s[j]) && dist[j]<tmp)
                {
                    u = j;              // u保存当前邻接点中距离最小的点的号码
                    tmp = dist[j];
                }
            s[u] = 1;    // 表示u点已存入S集合中
            // 更新dist
            for(int j=1; j<=n; ++j)
                if((!s[j]) && c[u][j]<maxint)
                {
                    int newdist = dist[u] + c[u][j];
                    if(newdist < dist[j])
                    {
                        dist[j] = newdist;
                        prev[j] = u;
                    }
                }
        }
    }
     

  • 相关阅读:
    Echarts使用笔记
    vue导出pdf
    mvn上传pom/jar至Nexus私服
    Linux下安装Redis
    国内首发,这款 Serverless 云原生一体化部署工具正式开源!
    使用云托管快速部署CMS内容管理系统
    云开发走进高校,腾讯云联合新工科联盟探索新生工程教育模式
    从0到3000万,TA们用云开发这样做
    基于 ThinkJS 的云开发体验
    使用小程序·云开发静态托管实现免鉴权h5跳转小程序
  • 原文地址:https://www.cnblogs.com/lutongxi/p/5182938.html
Copyright © 2020-2023  润新知