package Dijkstra;
import java.util.Arrays;
public class DijkstraTest {
public static void main(String[] args) {
int [][] times = {{2,1,1},{2,3,1},{3,4,1}};
int n = 4, k = 2;
Solution s1=new Solution();
s1.networkDelayTime(times,n,k);
}
}
class Solution {
public void networkDelayTime(int[][] times, int n, int k) {
final int FILL=Integer.MAX_VALUE/2;
int [] dis=new int[n+1];
boolean [] vis=new boolean[n+1];
int [][]map=new int[n+1][n+1];
for (int i = 0; i < n + 1; i++) {
Arrays.fill(map[i],FILL);
}
Arrays.fill(dis,FILL);
for (int i = 0; i < times.length; i++) {
map[times[i][0]][times[i][1]]=times[i][2];
}
for (int i = 1; i < n + 1; i++) {
System.out.println(map[k][i]);
dis[i]=map[k][i];
}
vis[k]=true;
dis[k]=0;
for (int i = 1; i < n+1; i++) {
int temp=FILL,cur=k;
for (int j = 1; j < n + 1; j++) {
if (!vis[i]&&dis[i]<temp){
cur=i;
temp=dis[i];
}
}
if (cur==k) continue;
vis[cur]=true;
for (int j = 1; j < n + 1; j++) {
if (dis[j]>dis[cur]+map[cur][j]){
dis[j]=dis[cur]+map[cur][j];
}
}
}
System.out.println(Arrays.toString(dis));
}
}
单源最小路径算法--基础版
最新推荐文章于 2024-07-24 20:44:05 发布