急急急,那位高手能给出求最短路径的完整源程序(高分)
图中带有权;谢谢
图中带有权;谢谢
解决方案 »
- 多线程之间的协调
- 一般情况下用Microsoft Visual C++ 6.0用的多还是Visual Studio 2005多啊?
- 求教用Execute操作数据库的用法
- 怎么使CListCtrl的整行高亮显示的颜色在最前面
- 一个调用 InvalidateRect( hwnd, NULL, 1) 函数的一个问题!!
- 如何区分音量控制中:Speaker(播放控制)里的microphone和Wave in(录音控制)里的microphone?
- 有没有人了解---freefont--啊? truefont \openfont
- 可以在TOOLBAR上面添加与默认宽度不同的自定义宽度的BUTTON吗?
- 有人知道在DLL中实现对话框的错误是为什么?
- 虚心向各位专家讨教:公式识别问题
- 请问哪位知道 DragQueryFile()的用法?
- 俺刚刚涉足DLL,可是在Dll中定义的类却怎么也导不出来,晕倒!
附:狄克斯特拉算法的源代码
#include "stdafx.h"
#include "iostream.h"
//#include <windows.h>
const int MaxVertexNum=100;
const int MaxEdgeNum=50;
const int MaxValue=10000;
typedef int VertexType;
typedef VertexType vexlist[MaxVertexNum];
typedef int adjmatrix[MaxVertexNum][MaxVertexNum];
struct edgenode{
int adjvex;
//int weight;
edgenode * next;
};typedef edgenode *adjlist[MaxVertexNum];
typedef VertexType xhjlist[MaxVertexNum];#define N 1000
#define MAX_INT 10000//--------------c++语言的Dijkstra最短路径算法
void Dijkstra(adjmatrix GA,int dist[],adjlist path,int i,int n)
{
int j,k,w,m;
int *s=new int[n];
for (j=0;j<n;j++){
if(j==i)
s[j]=1;
else
s[j]=0;
dist[j]=GA[i][j];
printf("%d ",GA[i][j]);
if(dist[j]<MaxValue && j!=i){
edgenode *p1=new edgenode;
edgenode *p2=new edgenode;
p1->adjvex=i;
p2->adjvex=j;
p2->next=NULL;
p1->next=p2;
path[j]=p1;
}
else
path[j]=NULL;
}
for (k=1;k<=n-2;k++)
{
w=MaxValue;m=i;
for(j=0;j<n;j++)
if(s[j]==0 && dist[j]<w){
w=dist[j];
m=j;
}
if(m!=i)
s[m]=1;
else
break;
for (j=0;j<n;j++)
if(s[j]==0 && dist[m]+GA[m][j]<dist[j]){
dist[j]=dist[m]+GA[m][j];
//PATH(path,m,j);
}
}
for (j=0;j<6;j++)
printf("%d \n",dist[j]);
}