單源最短路徑長度Dijkstra(迪傑斯特拉)演算法
阿新 • • 發佈:2019-01-29
求單源最短路徑長度的時間複雜度為O(n*n),空間複雜度同樣為O(n*n),n為總的節點個數
模組化實現函式原始碼如下:
#define POINT 250 #define MAXLENGTH 1000001 int road[POINT][POINT]; int len[POINT]; int found[POINT]; void dj(int count, int source) { for(int i=0;i<count;i++) { len[i]=road[source][i]; } len[source]=0; found[source]=1; int num; for(int i=0;i<count;i++) { int min=MAXLENGTH; for(int i=0;i<count;i++) if(!found[i]) if(len[i]<min) { num=i; min=len[i]; } found[num]=1; for(int i=0;i<count;i++) { if(!found[i]) if(min+road[num][i]<len[i]) len[i]=min+road[num][i]; } } }