最短路的Dijkstra算法代码

来源:百度知道 编辑:UC知道 时间:2024/07/01 12:57:42
10个城市间的最短路问题,用Dijkstra算法求解。
最好是在C-free里可以运行的~~~先谢谢大家了!
不要太长啊~~~能实现就可以了。。

#define max 32767
int dist[500];
int cost[500][500];
int s[500];
void D(int cost[][500],int n,int v,int *flag)
{
int i,j,min,k,v1;
v1=v-1;
for(i=0;i<n;i++)
{dist[i]=cost[v1][i];
s[i]=0;}
s[v1]=1;
for(i=0;i<n;i++)
{
min=max;
for(j=0;j<n;j++)
if(!s[j]&&(dist[j]<min))
{min=dist[j];k=j;}
if(min==max&&i!=n-1) {*flag=0;break;}
s[k]=1;
for(j=0;j<n;j++)
if(!s[j]&&(dist[j]>dist[k]+cost[k][j]))
dist[j]=dist[k]+cost[k][j];
}
}