一:時間複雜度為o(v*v)的dijkstra
const int max_v = 100 + 10;
const int inf = 1<<30;
int cost[max_v][max_v];//權值
int d[max_v];//頂點s出發最短距離
bool used[max_v];//以使用過的圖
int v;//頂點數
int edge;//邊數
void dijkstra(int s)
;vectorg[maxn];
int d[maxn]; //最短路徑
void solve()}}
printf("%d\n",d[n-1]);
}
三:模板題目hdu2544
description
在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t-shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎?
input
輸入包括多組資料。每組資料第一行是兩個整數n、m(n<=100,m<=10000),n表示成都的大街上有幾個路口,標號為1的路口是商店所在地,標號為n的路口是賽場所在地,m則表示在成都有幾條路。n=m=0表示輸入結束。接下來m行,每行包括3個整數a,b,c(1<=a,b<=n,1<=c<=1000),表示在路口a與路口b之間有一條路,我們的工作人員需要c分鐘的時間走過這條路。
輸入保證至少存在1條商店到賽場的路線。
output
對於每組輸入,輸出一行,表示工作人員從商店走到賽場的最短時間
sample input
2 11 2 3
3 31 2 5
2 3 5
3 1 2
0 0
sample output
32
第一種ac**
#include #include #include #include #include #include using namespace std;
const int max_v = 100 + 10;
const int inf = 1<<30;
int cost[max_v][max_v];//權值
int d[max_v];//頂點s出發最短距離
bool used[max_v];//以使用過的圖
int v;//頂點數
int edge;//邊數
void dijkstra(int s)
;vectorg[maxn];
int d[maxn]; //最短路徑
void solve()}}
printf("%d\n",d[n-1]);
}int main()
{ int i, a, b, c;
edge e;
while(~scanf("%d%d",&n,&r))
{if(n == 0 && r == 0) break;
for(i = 0; i < maxn; i++) g[i].clear();
for(i=0; i
最短路徑dijkstra模板
第一行兩個整數n m。n表示頂點個數 頂點編號為1 n m表示邊的條數。接下來m行表示,每行有3個數x y z。表示頂點x到頂點y邊的權值為z。求源點為1的最短路徑。題目 坐在馬桶上看演算法 演算法7 dijkstra最短路演算法 這道題我只是想練練dijkstra模板,dijkstra主要由兩個步...
最短路 路徑還原(dijkstra,模板)
b.wzy的大冒險 出發咯qaq 單點時限 2.0 sec 記憶體限制 512 mb 第一行兩個數n,m 1 n 103,1 m 103 接下來m行,每行三個數x,y,z,表示點 x 與點 y 之間有一條權值為 z 的有向邊 1 x,y,z 103 第一行乙個整數表示 1 到 n 的最短距離 第二行...
Dijkstra 最短路徑
dijkstra 最短路徑 針對有向圖,不支援負權值 圖的相鄰矩陣表示方法,還要用到最小值堆 include include define unvisited 0 define visited 1 define infinite 9999 設定最大值 define n 5 定義圖的頂點數 using...