求带啊,迪杰斯特拉算法求最优通路

从城市A到B,C,D,E城市,每个城市都要去一次,求最短通路,用JAVA怎么做啊,我弄了一个代码,但是只能求A到每个城市的距离,求不了通路
public class Dijkstra {
static int M=10000;
public static void main(String[] args) {

    int[][] weight1 = {//邻接矩阵  
            {0,3,2000,7,M},  
            {3,0,4,2,M},  
            {M,4,0,5,4},  
            {7,2,5,0,6},      
            {M,M,4,6,0}  
    };  


    int[][] weight2 = {  
            {0,130,244,126,141},  
            {130,0,274,M,186},  
            {244,274,0,M,M},  
            {126,M,M,0,58},  
            {141,186,M,58,0}  
    };  
    int start=0;  
    int[] shortPath = Dijsktra(weight2,start);  
      
    for(int i = 0;i < shortPath.length;i++)  
         System.out.println("从"+start+"出发到"+i+"的最短距离为:"+shortPath[i]);    
        
}  
  

public static int[] Dijsktra(int[][] weight,int start){  

    int n = weight.length;       
    int[] shortPath = new int[n];   
    String[] path=new String[n];
     for(int i=0;i<n;i++)  
         path[i]=new String(start+"-->"+i);  
    int[] visited = new int[n];  
      

    shortPath[start] = 0;  
    visited[start] = 1;  

    for(int count = 1;count <= n - 1;count++)  
    {  

        int k = -1;    
        int dmin = Integer.MAX_VALUE;  
        for(int i = 0;i < n;i++)  
        {  
            if(visited[i] == 0 && weight[start][i] < dmin)  
            {  
                dmin = weight[start][i];  
                 
                k = i;  
            }    
                  
        }  
       System.out.println("k="+k);  
           

        shortPath[k] = dmin;  

        visited[k] = 1;  


        for(int i = 0;i < n;i++)  
        {                   
            if(visited[i] == 0 && weight[start][k] + weight[k][i] < weight[start][i]){  
                 weight[start][i] = weight[start][k] + weight[k][i];  
                 
                 path[i]=path[k]+"-->"+i;  
               
            }  
              
        }    
   
    }  
     for(int i=0;i<n;i++)  
     System.out.println("从"+start+"出发到"+i+"的最短路径为:"+path[i]);    
     System.out.println("=====================================");  
    
    return shortPath;  
}  

}

遍历一下,你把你这个程序写成函数,然后一个城市到其他城市的距离都可以算出来,然后求一下最小值即可