首页 > 代码库 > queue,指针求最短路的区别

queue,指针求最短路的区别

这里以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,指针求最短路的区别