【图论】单源点最短路模板(有向图)Dijkstra
来源:互联网 发布:连通区域图像分割算法 编辑:程序博客网 时间:2024/05/17 04:44
#include <cstdio>#include <iostream>#include <cstring>#include <queue>#include <algorithm>#include <vector>using namespace std;const int MAXN = 500;const int MAXM = 20000;typedef pair<int, int> pii;priority_queue<pii, vector<pii>, greater<pii> > que;int dis[MAXN+10], Fa[MAXN+10];bool vis[MAXN+10];struct node{ int v, w; node *next;}Edges[MAXM*2+10], *ecnt=Edges, *adj[MAXN+10];char ch;void Read(int &u){ while((ch = getchar()) , ch != EOF){ if(ch >= '0' && ch <= '9'){ u = ch - '0'; while((ch = getchar()), ch >= '0' && ch <= '9') u = u * 10 + ch - '0'; ungetc(ch, stdin); return; } }}void addedge(int u, int v, int w){ ++ecnt; ecnt->v = v; ecnt->next = adj[u]; ecnt->w = w; adj[u] = ecnt;}int main(){ int n, m, u, v, w, s, t; Read(n); Read(m); for(int i=1;i<=m;i++){ Read(u); Read(v); Read(w); addedge(v, u, w); } Read(s); Read(t); que.push(make_pair(0, t)); memset(dis, 0x7f, sizeof dis); dis[t] = 0; pii tp; while(!que.empty()){ tp = que.top(); que.pop(); if(vis[tp.second]) continue; for(node *p=adj[tp.second];p;p=p->next){ if(dis[p->v] > tp.first + p->w){ dis[p->v] = tp.first + p->w; Fa[p->v] = tp.second; que.push(make_pair(dis[p->v], p->v)); }else if(dis[p->v] == tp.first + p->w) Fa[p->v] = Fa[p->v] ? min(tp.second, Fa[p->v]) : tp.second; } vis[tp.second] = true; } printf("%d\n%d", dis[s], s); u = s; do{ u = Fa[u]; if(u > 0) printf(" %d", u); }while(u != t); return 0;}
0 0
- 【图论】单源点最短路模板(有向图)Dijkstra
- HDU-2544 最短路(Dijkstra算法求无向图最短路模板题)
- Dijkstra模板求单源点最短路径
- 单源点最短距离(Dijkstra)
- POJ 2502 Subway 单源点最短路模板
- 有向图中单个源点到终点的最短路径--Dijkstra算法与实现
- poj 3268(dijkstra变形---有向图来回最短路)
- 【数据结构】有向图、无向图以及最短路(Dijkstra, Floyd)算法的C#实现(纯模板Template实现)
- CQOI 1163 有向图的单源点最短路径
- 【DP+广搜】有向图的单源点最短路径
- 图的最短路径(三)-单源点最短路径(Dijkstra算法)
- 单源点最短路径算法(dijkstra)
- 【解题报告】HDU 1874 畅通工程续 -- Dijkstra算法详解 单源点最短路问题
- HDU 1874 畅通工程续-- Dijkstra算法详解 单源点最短路问题
- Dijkstra算法--有向图的源点到其他顶点的最短路径(连接矩阵、邻接矩阵两种方式)
- 【数据结构】有向图、无向图以及最短路(Dijkstra)算法的C#实现(Template模式)
- 单源点最短路径----Dijkstra算法
- 单源点最短路径(dijkstra算法)
- BZOJ 1505: [NOI2004]小H的小屋
- C# Func的介绍
- QT5串口通信
- Android WebView关于图片/文件上传
- Android四大组件Broadcast Receiver详解
- 【图论】单源点最短路模板(有向图)Dijkstra
- Find The Duplicate Number
- python 一个简单的依靠文件来判断key是否重复的方法
- 深入研究java.lang.Object类
- Linux 的启动流程
- 1063. Set Similarity (25) 并查集
- kafka学习教程
- curl,用法實例
- 正则表达式相关网址