優點——適用範圍廣,本**屬於公式型**,可隨意更換資料,適合零基礎同學。
主要思路:
1.用乙個二維陣列存放帶權有向圖的鄰接矩陣;
2.基於dijkstra演算法分別申請三個陣列,distance, path, used分別記錄從起點到其餘各點的最短距離,到目標結點路徑上的前乙個結點,到圖中某個結點是否已找到最短路徑;
3.逐漸確定從源點到圖中各結點的最短路徑,直至結束;
如下圖所示,求最短經。
// #include "stdlib.h "
#include
#define size
110
#define inf
1000000
; int map[
size][
size];
//鄰接矩陣儲存
int len[
size];
//d[i]表示源點到i這個點的距離
int visit[
size];
//節點是否被訪問
int n,m,j,pos,ans,temp;
int temp =
inf;
int dijkstra
(int from
, int to)
for(i =
1; i < n ;
++i)
} visit[pos]=1
;for
(j =
1; j <= n ;
++j)}}
return len[to];}
int main()
}/* int a,b,c; //輸入資料
for(i = 1 ; i <= m ; ++i) */
map[1]
[2]=
7;//測試資料
map[1]
[3]=
9;map[1]
[6]=
14;map[2]
[3]=
10;map[2]
[4]=
15;map[3]
[6]=
2;map[5]
[6]=
9;map[4]
[5]=
6;map[3]
[4]=
11;for(i =
1; i <= n ;
++i)
}printf
("%d"
,ans=
dijkstra(3
,6))
;return0;
}/* 邊的資料
1 2 7
1 3 9
1 6 14
2 3 10
2 4 15
3 6 2
5 6 9
4 5 6
3 4 11
*/例如:求1點到5點的最短距離
結果:
例如:求2點到5點的最短距離
結果:
最短路徑C語言
問題描述 現已知有n n 10 個城市m m 30 條路,保證每個城市之間有路,單向到達,每個城市之間的路程不一樣,求任意兩個城市之間的最短路程 樣例輸入 4 81 2 2 1 3 6 1 4 4 2 3 3 3 1 7 3 4 1 4 1 5 4 3 12 樣例輸出 0 2 5 4 9 0 3 4...
問題 C 最短路徑
問題 c 最短路徑 在洛谷上刷最短路的題然後被老師拉回去做演算法筆記上面的題。拿到這道題,先確定所有路徑唯一,然後是無向邊,那麼對於邊權處理,直接賦值為2的k次方就可以了,然後直接跑最短路。這種思路非常暴力,但仔細看題目的資料範圍,k 500,ull你估計都存不下,沒救。有的同學可能會想,反正最後都...
最短路 最短路徑問題
題目描述 平面上有n個點 n 100 每個點的座標均在 10000 10000之間。其中的一些點之間有連線。若有連線,則表示可從乙個點到達另乙個點,即兩點間有通路,通路的距離為兩點直線的距離。現在的任務是找出從一點到另一點之間的最短路徑。input 共有n m 3行,其中 第一行為乙個整數n。第2行...