當前位置:編程學習大全網 - 網站源碼 - C語言如何實現5個城市之間求最短路徑。 從A出發,最終回到A。 求最短路徑問題。 可用窮舉來完成。

C語言如何實現5個城市之間求最短路徑。 從A出發,最終回到A。 求最短路徑問題。 可用窮舉來完成。

//這個算法名字叫迪傑斯特拉算法

#include<stdio.h>

#include<stdlib.h>

#define?max?11000000000

inta[1000][1000];

intd[1000];//d表示某特定邊距離

intp[1000];//p表示永久邊距離

inti,j,k;

intm;//m代表邊數

intn;//n代表點數

intmain()

{

scanf("%d%d",&n,&m);

intmin1;

intx,y,z;

for(i=1;i<=m;i++)

{

scanf("%d%d%d",&x,&y,&z);

a[x][y]=z;

a[y][x]=z;

}

for(i=1;i<=n;i++)

d[i]=max1;

d[1]=0;

for(i=1;i<=n;i++)

{

min1=max1;

for(j=1;j<=n;j++)

if(!p[j]&&d[j]<min1)

{

min1=d[j];

k=j;

}

p[k]=j;

for(j=1;j<=n;j++)

if(a[k][j]!=0&&!p[j]&&d[j]>d[k]+a[k][j])

d[j]=d[k]+a[k][j];

}

for(i=1;i<n;i++)

printf("%d->",p[i]);

printf("%d\n",p[n]);

return0;

}

  • 上一篇:ntvdm cpu遇到無效指令
  • 下一篇:絕世仙王大話西遊西行怎麽玩
  • copyright 2024編程學習大全網