最短路
2018-11-29 00:35
134 查看
- Floyd
for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
- Dijkstra
void dij(int e) { for(int i=1;i<=n;i++)dis[i]=E[e][i]; for(int i=1;i^n;i++) { int min=oo,u; for(int j=1;j<=n;j++) { if(!vis[j] and dis[j]<min) min=dis[u=j]; } vis[u]=1; for(int v=1;v<=n;v++) { if(!vis[v] and dis[v]>dis[u]+E[u][v]) dis[v]=dis[u]+E[u][v]; } } }
- 邻接链表
struct E{int next,to,w;}; E edge ; int head ->-1,cnt->1; void add(int u,int v,int w) { edge[cnt].next=head[u]; edge[cnt].w=w; edge[cnt].to=v; head[u]=cnt++; } for(int i=head[k];~i;i=edge[i].next)
- Dij(priority_queue)
struct E{int v,w;}; bool operator <(E a,E b){return a.w>b.w;} vector<E>g ; int vis ->0,dis ->oo; void dij(int s) { priority_queue<E>dp; dis[s]=0; dp.push((E){s,0}); while(!dp,empty()) { E node=dp.top(); dp.pop(); int u=node.v; if(vis[u])continue; vis[u]=1; for(E e:g[u]) { if(!vis[e.v] and dis[e.v]>dis[u]+e.w) { dis[e.v]=dis[u]+e.w; dp.push((E){e.v,dis[e.v]}); } } } }
- Spfa
struct node { int to,next,v; }Edge ; int head ,dis ,tot; void add_edge(int a,int b,int c) { Edge[++tot].to=b; Edge[tot].v=c; Edge[tot].next=head[a]; head[a]=tot; } bool spfs(int s,int n) { queue<int>q; int num ,vis ,k,to,v; memset(num,0,sizeof(num)); memset(vis,0,sizeof(vis)); dis[s]=0; q.push(s); vis[s]=1; while(!q.empty()) { k=q.front(); q.pop(); vis[k]=0; for(int i=head[k];i!=-1;i=Edge[i].next) { to=Edge[i].to; v=Edge[i].v; if(dis[k]+v<dis[to]) { dis[to]=dis[k]+v; if(!vis[to]) { vis[to]=1; q.push(to); num[to]++; if(num[to]>n)return false; } } } } return true; }
- dij(set)
struct edge{int to,length;}; vector<edge>graph ; int n; int min_distance ; int dij(int source){ min_distance[source]=0; set<pair<int,int> >g; g.insert({0,source}); while(!g.empty()){ int where=g.begin()->second; g.erase(g.begin()); for(auto &e:graph[where]){ if(min_distance[e.to]>min_distance[where]+e.length){ g.erase({min_distance[e.to],e.to}); min_distance[e.to]=min_distance[where]+e.length; g.insert({min_distance[e.to],e.to}); } } } }
相关文章推荐
- BZOJ 2886: 最短路/BZOJ 3260: 跳 乱搞
- hdu1596 find the safest road 最短路dijkstra
- HDU 1595 find the longest of the shortest (最短路+记录路径+枚举删边)
- Jzzhu and Cities CodeForces - 449B (最短路 + 最短路的条数)
- poj1125Stockbroker Grapevine - floyd最短路
- POJ 1556 The Doors(判断线段相交 && 最短路)
- 【福慧双修-这是不是最短路?】
- HDU-2066(dijkstra最短路综合)
- HDOJ 4463 Outlets 最短路
- HDU 1874 畅通工程续 (最短路模板
- hdu2066 一个人的旅行 最基础最短路
- 求单源最短路的SPFA算法
- hdu1142(最短路+DFS)
- poj 2677 Tour (最短路)
- hdu 5423 Rikka with Tree DFS 或最短路
- Gym - 100814G Galway Girl (最短路spfa+二分)
- 无向图邻接表怎么建,求指点!! HDU 2544 最短路(Dijkstra、结题报告 精简版!)
- poj2502 最短路
- Minimum Transport Cost Floyd 输出最短路
- POJ Silver Cow Party【最短路】