您的位置:首页 > Web前端 > JavaScript

最短路 dijskal

2015-11-15 16:57 656 查看
这是最短路的dijskal的实现

关于这个算法的讲解的话,前人的讲解已经足矣,所以这里不进行讲解

void dijskal(int start){
    memset(dis,INF,sizeof(dis));
    memset(vis,0,sizeof(vis));

    for(int i=0;i<n;i++ ){
            dis[i]=mp[start][i];
            point[i]=start;
    }

    vis[start]=1,dis[start]=0;

    for(int i=1;i<n;i++){
        int minn=INF,p;
        for(int j=0;j<n;j++){
            if(!vis[j] && dis[j]!=INF && dis[j]<minn){
                minn=dis[j];
                p=j;
            }
        }
        vis[p]=1;
        for(int j=0;j<n;j++){
            if(!vis[j] && mp[p][j]!=INF){
                if(dis[j]>minn+mp[p][j]){
                    dis[j]=minn+mp[p][j];
                    point[j]=p;
                }
            }
        }
    }
}


路径的输出:
void display(int j){

    if(j==-1) return ;
    else {

            display(point[j]);
            cout<<" "<<a[j];
        }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: