标签: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