迪杰斯特拉算法模板

void dj(int n)
{
    
    
	int k;
	for(int i=1;i<=n;i++)
	{
    
    
		dist[i]=mmap[1][i];//这里假设1为原点 
	}
	v[1]=1;//走到原点点 
	dist[1]=0;//原点到原点的距离为0 
	for(int i=1;i<=n;i++)
	{
    
    
		mmin=INF;//无限大
		k=0;
		for(int j=1;j<=n;j++)//距离点i最近的可以到达的点 
		{
    
    
			if(!v[j]&&dist[j]<mmin) 
			{
    
    
				mmin=dist[j];
				k=j;
			}
		}
		v[k]=1;
		for(int j=1;j<=n;j++)
		{
    
    
			if(!v[j]&&dist[k]+mmap[k][j]<dist[j])
			dist[j]=dist[k]+mmap[k][j];
		}
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_51768569/article/details/113406318