码迷,mamicode.com
首页 > 其他好文 > 详细

dijkstra

时间:2014-09-14 16:42:17      阅读:213      评论:0      收藏:0      [点我收藏+]

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

  

dijkstra

标签:blog   ar   for   div   log   c   amp   ef   size   

原文地址:http://www.cnblogs.com/dy-techblog/p/3971152.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!