最短路算法

Posted chinacwj1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最短路算法相关的知识,希望对你有一定的参考价值。

Floyd(hdu 1874)


for(int k=0;k<n;k++)
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
			e[i][j]=min(e[i][j],e[i][k]+e[k][j]);


k为枚举点,dp思想

Dijskstra(hdu 2112)

int dij()
{
	v[1]=1;
	dis[1]=0;
	//cout<<num<<endl;
	for(int i=2;i<num;i++)
	{
		dis[i]=road[1][i];
	}
	for(int i=1;i<num;i++)
	{
		int mn=inf;
		int k=-1;
		for(int j=1;j<num;j++)
		{
			if(!v[j]&&dis[j]<mn)
			{
				mn=dis[j];
				k=j;
			}
		}
		if(k==-1) break;
		v[k]=1;
		for(int j=1;j<num;j++)
		{
			if(!v[j])
			{
				if(dis[j]>road[k][j]+dis[k])
				{
					dis[j]=road[k][j]+dis[k];
				}
				//cout<<dis[j]<<endl;
			}
		}
	}
	return dis[2];
}


以上是关于最短路算法的主要内容,如果未能解决你的问题,请参考以下文章

单源最短路径Dijkstra算法的思想详细步骤代码

最短路径(Dijkstra算法)

最短路求两点间最短路的Floyd算法及其matlab实现

最短路径 深入浅出Dijkstra算法(一)

最短路径

(王道408考研数据结构)第六章图-第四节4:最短路径之迪杰斯特拉算法(思想代码演示答题规范)