首页 > 代码库 > dijkstra+heap
dijkstra+heap
#include <iostream> #include <queue> #include <vector> using namespace std; const int N=405; struct rec { int v,w; }; vector<rec> edge[N*N]; int n,st,ed; __int64 dis[N*N]; bool vis[N*N]; struct cmp { bool operator()(int a,int b) { return dis[a]>dis[b]; } }; void Dijkstra() { priority_queue<int,vector<int>,cmp> Q; memset(dis,-1,sizeof(dis)); memset(vis,0,sizeof(vis)); int i,u,v; Q.push(st); dis[st]=0; while(!Q.empty()) { u=Q.top(); Q.pop(); vis[u]=0; if(u==ed) break; for(i=0;i<edge[u].size();i++) { v=edge[u][i].v; if(dis[v]==-1 || dis[v]>dis[u]+edge[u][i].w) { dis[v]=dis[u]+edge[u][i].w; if(!vis[v]) { vis[v]=1; Q.push(v); } } } } }
dijkstra+heap
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。