标签:blog ar for div log c amp ef size
#define maxSize 10
//节点类型
class VNode
{
public:
int no;
char info;
};
//图类型
class MGraph
{
public:
float edges[maxSize][maxSize];//float表示权值
int n,e;
VNode vex[maxSize];
};
void dijkstra(MGraph g, int v, int dist[],int path[])
{
int set[maxSize];//存放已经确定的节点
//初始化dist,path,set数组
for(int i = 0; i < g.n; ++i)
{
dist[i] = g.edges[v][i];
set[i] = 0;
if(g.edges[v][i] < INT_MAX)
{
path[i] = v;
}else
{
path[i] = -1;
}
}
set[v] = 1;//把起始点加入set中
int min = INT_MAX;
int min_index = -1;//每一次找dist最小的点加入
for(int j = 0; j < g.n; ++j)
{
//找到dist最小的点
for(int k = 0; k < g.n; ++k)
{
if(set[k] == 0 && dist[k] < min)
{
min = dist[k];
min_index = k;
}
}
set[min_index] = 1;//把dist最小的点加入
//以dist最小的点作为中间点,去更新其他的dist与对应的path
for(int k = 0; k < g.n; ++k)
{
if(set[k] == 0 && dist[min_index] + g.edges[min_index][k] < dist[k])
{
dist[k] = dist[min_index] + g.edges[min_index][k];
path[k] = min_index;
}
}
}
}
标签:blog ar for div log c amp ef size
原文地址:http://www.cnblogs.com/dy-techblog/p/3971152.html