spfa和Dijkstra的区别?
  • 板块学术版
  • 楼主harvey2019
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/23 22:25
  • 上次更新2024/10/23 22:26:22
查看原帖
spfa和Dijkstra的区别?
283541
harvey2019楼主2024/10/23 22:25

以前一直写的Dijkstra,快考试了看了眼SPFA,感觉两个代码几乎一模一样?

Dijkstra

	dis[s] = 0;
	tmp.dis = 0;
	tmp.pos = s;
	
	q.push( tmp );
	
	while( !q.empty() )
	{
		tmp = q.top();
		q.pop();
		
		x = tmp.pos;
		
		if( !vis[x] )
		{
			vis[x] = 1;
			
			for( i = head[x] ; i ; i = a[i].next )
			{
				y = a[i].to;
				
				if( dis[y] > dis[x] + a[i].dis )
				{
					dis[y] = dis[x] + a[i].dis;
					
					if( !vis[y] )
					{
						tmp.dis = dis[y];
						tmp.pos = y;
						
						q.push( tmp );
					}
				}
			}
		}
	}

SPFA

	q.push(s);
    dis[s]=0;
    vis[s]=1;
    while(!q.empty())
	{
        u=q.front();
        q.pop();
        vis[u]=0;
        for(int i=head[u];i;i=h[i].next)
		{
            v=h[i].to;
            if(dis[v]>dis[u]+h[i].w)
			{
                dis[v]=dis[u]+h[i].w;
                if(!vis[v])
				{
                      vis[v]=1;
                      q.push(v);
                }
            }
        }
    }
2024/10/23 22:25
加载中...