zoukankan      html  css  js  c++  java
  • 迪克斯特拉算法简单模板

    //这里选的是第一点作为起始点,按照所需修改
    const int maxs = 105;
    const int INF = 0x3f3f3f3f;
    int N;//点的总个数
    int edge[maxs][maxs];//点与点之间的距离关系
    void dijkstra()
    {
        int dist[maxs];//用来保存其它各点到选定点的最短距离
        bool vis[maxs];//判断该点是否已经加入到集合中了
        memset(vis,false,sizeof(vis));
        vis[1]=true;
        for(int i=1;i<=N;i++)
            dist[i]=edge[1][i];
        for(int i=1;i<=N;i++)
        {
            int mins=INF,k;
            for(int j=1;j<=N;j++)
                if(!vis[j]&&dist[j]<mins)
                {
                    mins = dist[j];
                    k=j;
                }
            vis[k]=true;//该点已经加入集合
            //新的点加入,更新选定点到还没有被构造的点的最短距离
            for(int j=1;j<=N;j++)
                if(!vis[j]&&edge[k][j]<INF&&(dist[k]+edge[k][j])<dist[j])
                    dist[j]=dist[k]+edge[k][j];
        }
    }
    
  • 相关阅读:
    2312--1.3.4 Prime Cryptarithm 牛式
    Slava and tanks 877C
    World Cup 996B(排队模拟)
    css内边距 边框
    iframs刷新的两种方法
    JS DOM节点
    JS对话框
    JS事件常用事件
    JS数组
    JS第一天
  • 原文地址:https://www.cnblogs.com/wt20/p/5730419.html
Copyright © 2011-2022 走看看