您的位置:首页 > 其它

最短路模板,floyd prim

2014-05-09 17:52 162 查看

floyd:

void floyd(int n)  
{   
    int i,j,k;  
     for(k=1;k<=n;k++)  
          for(i=1;i<=n;i++)  
               for(j=1;j<=n;j++)  
                    map[i][j]=min(map[i][j],map[i][k]+map[k][j]);
}

Prim:


int prim(int n)
{
	int i,j,mk,ans=0;
	memset(vis,0,sizeof vis);
	for(i=2;i<=n;i++)dis[i]=g[1][i];
	vis[1]=1;
	for(i=2;i<=n;i++)
	{
		int temp=INF;
 		for(j=1;j<=n;j++)
			if(!vis[j]&&dis[j]<temp)temp=dis[mk=j];

		vis[mk]=1ans+=temp;

		for(j=1;j<=n;j++)//更新顶点
			if(!vis[j]&&g[mk][j]<dis[j])dis[j]=g[mk][j];//dis【】存储未访问点与集合最小距离,此处更新该数组
	}
	return ans;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: