码迷,mamicode.com
首页 > 编程语言 > 详细

Dijkstra算法

时间:2017-04-08 20:45:57      阅读:281      评论:0      收藏:0      [点我收藏+]

标签:one   pre   close   --   ++   max   false   span   system   

技术分享
public class Dijkstra {
    static int maxint=1000;
    public static void Dijkstra(int n,int v,int dist[],int c[][],int prev[]){
        boolean s[]=new boolean[n];
        for(int i=0;i<n;i++){
            dist[i]=c[v][i];
            s[i]=false;
            if(dist[i]==maxint)prev[i]=-1;
            else prev[i]=v;
    }
        s[v]=true;
        for(int i=0;i<n;i++){
            int temp=maxint;
            int u=v;
            for(int j=0;j<n;j++){
                if(dist[j]<temp&&!s[j]){
                    temp=dist[j];
                    u=j;
                }
            }
            s[u]=true;
            for(int j=0;j<n;j++){
                if(!s[j]){
                    dist[j]=(dist[u]+c[u][j])<dist[j]?dist[u]+c[u][j]:dist[j];
                    prev[j]=u;
                }
            }
        }
}
    public static void print(int n,int v,int dist[],int prev[]){
        int f[]=new int[n];
        for(int i=0;i<n;i++)
            if(i!=v){
                int start=n-2;
                int k=i;
                f[n-1]=i;
                while(prev[k]!=v){
                    f[start--]=prev[k];
                    k=prev[k];
                }
                f[start]=v;
             System.out.print("从城市"+v+"——城市"+i+"的最短路径为:");
             for(int j=start;j<n;j++)
                 System.out.print(f[j]+"——");
             System.out.print("距离为:"+dist[i]);
             System.out.println();
            }
        
    }
}
View Code

 

Dijkstra算法

标签:one   pre   close   --   ++   max   false   span   system   

原文地址:http://www.cnblogs.com/nihai/p/6682873.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!