怎样用C++语言编写Dijkstra算法求出下面无向网络图中各节点间的最短路径?

或者是1节点到其它节点的最短路径。

百度一下这个算法就行了~
ps:别看百度百科,太非了(雾
看看博客的讲解,不难的追问

主要是我C++基础不好,那些程序我都看不懂,现在急要这程序,没办法了。

追答

给你个我写的模板行吗
//无向图,输出从1到的k最短路
#include
#include
int a[1005][1005]={0},b[1005]={0,1};
int main()
{
int v,e,i,j,c,d,num,min=0;
scanf("%d%d",&v,&e);
for(i=1;ia[1][j]) min=j;
b[min]=1;
for(j=1;j<=v;j++)
if(b[j]==0&&a[1][min]+a[min][j]<a[1][j]) a[1][j]=a[1][min]+a[min][j];
}
for(i=1;i<=v;i++)
printf("%d ",a[1][i]);
system("pause");
return 0;
}
/*
附测试数据
6 15
1 2 2
3 1 3
1 4 1
1 5 12
1 6 15
3 2 2
4 2 5
5 2 3
2 6 12
3 4 3
5 3 6
6 3 5
5 4 7
4 6 9
5 6 2

(ans:7)
*/

温馨提示:答案为网友推荐,仅供参考
相似回答