首页 > 其他 > 详细

queue,指针求最短路的区别

时间:2014-10-27 10:38:48      阅读:309      评论:0      收藏:0      [点我收藏+]

这里以spfa为例;//都用邻接表存边;

指针:

int h=1,t=1;
    q[h]=x;
    while(h<=t){
    	int u=q[h];
    	vis[u]=0;
    	for(int i=head[u];i!=-1;i=e[i].next){
    		int v=e[i].to;
    		if(dist[v]>dist[u]+e[i].w){
    			dist[v]=dist[u]+e[i].w;
    			if(!vis[v]){
    				vis[v]=1;
    				q[++t]=v;
    			}
    		}
    	}
    	h++;
    }

queue

void spfa(int x){
	queue<int> q;
	q.push(x);
	memset(vis,true,sizeof(vis));
	while(!q.empty()){
		int u=q.front();
		q.pop;
		vis[u]=0;
		for(int i=head[u];i!=-1;i=e[i].next){
    		int v=e[i].to;
    		if(dist[v]>dist[u]+e[i].w){
    			dist[v]=dist[u]+e[i].w;
    			if(!vis[v]){
    				vis[v]=1;
    				q.push(v);
    			}
    		}
    	}
	} 
}

  

其实也就是出队入队的不同而已;

queue,指针求最短路的区别

原文:http://www.cnblogs.com/polebug/p/4053561.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!