首页 > 代码库 > 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,指针求最短路的区别
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。