日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

最短路径迪杰斯特拉算法 c语言,Dijkstra第K最短路径算法

發布時間:2024/10/14 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最短路径迪杰斯特拉算法 c语言,Dijkstra第K最短路径算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

該樓層疑似違規已被系統折疊?隱藏此樓查看此樓

//運籌學之最短路徑

#include?

#include?

#define?M?99999

int?main()

{

int?G[100][100];

int?n;

int?p[100],flag[100],s[100];

int?cur;

int?m,k,l,i,j;

ifstream?fin("in.txt");

//enter

fin>>n;

for(i=0;i

for(j=0;j

G[i][j]=M;

for(i=0;i

{

fin>>m;

for(j=0;j

{

fin>>k>>l;

G[i][k-1]=l;

}

}

for(i=0;i

{

flag[i]=0;

s[i]=M;

}

cur=0;

flag[cur]=1;

s[cur]=0;

p[cur]=0;

for(i=1;i

{

for(j=0;j

{

if(flag[j]==0)

{

m=s[cur]+G[cur][j];

if(m

{

s[j]=m;

p[j]=cur;

}

}

}

m=M;

for(j=0;j

{

if(flag[j]==0)

{

if(s[j]

{

m=s[j];

cur=j;

}

}

}

flag[cur]=1;

if(s[cur]==M)

{

//continue;

p[cur]=0;

for(j=0;j

if(flag[j]==0)

{

s[j]=M;

p[j]=0;

flag[j]=1;

}

break;

}

}

ofstream?fout("out.txt");

for(i=1;i

{

if(s[i]==M)

{

cout<

fout<

}

else

{

cout<

cout<

fout<

fout<

k=p[i];

cout<

fout<

while(k!=0)

{

k=p[k];

cout<

fout<

}

}

cout<

fout<

}

return?0;

}

測試數據:

11

2?2?2?4?8

2?5?1?4?6

2?7?9?1?1

1?3?7

2?9?1?4?5

3?5?3?4?1?7?4

3?4?7?9?3?10?1

2?5?2?11?9

2?6?6?8?7

2?9?1?11?4

1?9?2

11表示有11個頂點的圖

2?2?2?4?8

2表示第一個頂點射出2條線,2?2表示1->2的長度為2。。。。。。。。

輸出數據:

從第1個點到第2的最短路為:2.

路徑為:2?

從第1個點到第3的最短路為:15.

路徑為:3?

從第1個點到第4的最短路為:8.

路徑為:4?

從第1個點到第5的最短路為:3.

路徑為:5?

從第1個點到第6的最短路為:10.

路徑為:6?

從第1個點到第7的最短路為:14.

路徑為:7?

從第1個點到第8的最短路為:11.

路徑為:8?

從第1個點到第9的最短路為:4.

路徑為:9?

從第1個點到第10的最短路為:15.

路徑為:10?

從第1個點到第11的最短路為:19.

路徑為:11?

總結

以上是生活随笔為你收集整理的最短路径迪杰斯特拉算法 c语言,Dijkstra第K最短路径算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。