现在的位置: 首页 > 综合 > 正文

Bellman()算法

2013年08月18日 ⁄ 综合 ⁄ 共 351字 ⁄ 字号 评论关闭
int relax(int a,int b,int val)
{
	if(dis[b]>dis[a]+val)
	{
		dis[b]=dis[a]+val;
		path[b]=a;
		return 1;
	}
	return 1;
}
int Bellman()
{
	for(int i=1;i<=N;i++)
	{
		dis[i]=inf;
	}
	dis[sta]=0;
	for(int i=1;i<N;i++)
	{
		int temp=0;
		for(int j=1;j<=M;j++)//无向图的话 是2*M
		{
			if(relax(e[j][0],e[j][1],e[j][2]))
				temp=1;
		}
		if(!temp)
			break;
	}
	for(int i=1;i<=M;i++)
	{
		if(relax(e[i][0],e[i][1],e[i][2]))
			flag=1;
	}
	return dis[end];
}

抱歉!评论已关闭.