首页 > 编程语言 > 详细

dijkstra 算法

时间:2019-03-17 16:22:52      阅读:174      评论:0      收藏:0      [点我收藏+]

我什么都说不出来了

 

 

因为这是邻接矩阵的,只有分分钟MLE的命

 

 

GOOD LUCKY

 

 

#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;

const int maxn =10100;

int g[maxn][maxn],n,m;
int dis[maxn],status[maxn];


void dij(int start){
    memset(status,0,sizeof(status));
    memset(dis,0x3f,sizeof(dis));
    dis[start]=0;
    status[start] = 1;
    for(int ti=1;ti<=n;++ti){
        int pick=-1;
        for(int i=1;i<=n;++i){
            if(status[i] == 1){
                if(pick== -1|| dis[i]< dis[pick])
                pick=i;
            }
        }
        if(pick== -1){
        break;
        }
        status[pick] = 2;
        for(int i=1;i<=n;++i){
            if(status[i] ==0|| status[i] == 1){
                if(g[pick][i] != -1){
                    status[i] = 1;
                    dis[i]=min(dis[i],dis[pick]+g[pick][i]);
                } 
            }
        }
    }
}



int main(){
    memset(g,-1,sizeof(g));

    cin>>n>>m>>s;
    for(int i=1;i<=m;++i){
        int x,y,z;
        cin>>x>>y>>z;
        g[x][y]=g[y][x]=z;
    }
    dij(s);
    for(int i=1;i<=n;++i)
    {
        if(dis[i]== -1 )
        cout<<2147483647<<" ";
        else
        cout<<dis[i]<<" ";
    }
}

 

dijkstra 算法

原文:https://www.cnblogs.com/For-Miku/p/10547367.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!