dijkstra.cpp

来自「最短路径算法」· C++ 代码 · 共 49 行

CPP
49
字号
#ifndef DIJKSTRA
#define DIJKSTRA
#include "afx.h"
#include "dijkstra.h"
int* dijkstra(int ** dig,int n)
{
    int *p=new int(n);
	for(int i=0;i<n;i++)p[i]=MAX;
	p[0]=0;

	while(1)
	{
	    //判断是否已经完成查找
		int end=0;
		for(i=0;i<n;i++)
		{
		   if(p[i]==MAX)end=1;
		}
		if(end==0)return p;

		//在已经标记的顶点中找相应的边
		for(i=0;i<n;i++)
		{
		   
			if(p[i]!=MAX)//是否标记
			{
				//查找最小边
				for(int j=0;j<n;j++)
				{
				     
					if(i==j)continue; 
					int s=p[j];
					if(dig[i][j]!=MAX)
					 {
					     if(s>p[i]+dig[i][j])
						 {
						    s=p[i]+dig[i][j];
                            p[j]=s;//标记边
						 }
					     
					 }

				}
			}

		}
	}
};
#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?