【最短路】CODE[VS] 1557 热浪 (Dijkstra模板)
来源:互联网 发布:手机淘宝如何分享宝贝 编辑:程序博客网 时间:2024/06/04 08:54
拒绝前往德克萨斯州
哼唧
Dijkstra才是真正优美的最短路算法,不服来辩!
基本策略是贪心,正因为此性质,我们可以用一个小根堆维护,每次从堆定取出一个最小的
代码(+heap优化)
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <cstdlib>#include <queue>const int maxn = 200005;using namespace std;int tot;int t,c,ts,te;int head[maxn];int dist[maxn];bool used[maxn];struct edge{ int f,t,c,next;}es[maxn << 1];struct node{ int u,v; bool operator < (const node &a)const { return v > a.v; }};inline void build(int x,int y,int z){ tot++; es[tot].f = x; es[tot].t = y; es[tot].c = z; es[tot].next = head[x]; head[x] = tot;}inline void rd(int &x){ scanf("%d",&x);}inline void init(){ memset(head,0,sizeof(head)); memset(used,0,sizeof(used)); tot = 0; return ;}priority_queue<node >q;inline void dijkstra(int ss,int ee){ memset(dist,108,sizeof(dist)); dist[ss] = 0; q.push((node){ss,0}); while(!q.empty()) { node now = q.top(); int u = now.u; q.pop(); if(used[u] == true) continue; used[u] = true; if(u == ee) return ; for(int i = head[u];i;i = es[i].next) { int v = es[i].t; if(dist[v] > dist[u]+es[i].c) { dist[v] = dist[u]+es[i].c; q.push((node){v,dist[v]}); } } }}int main(){ init(); rd(t);rd(c);rd(ts);rd(te); for(int i = 1;i <= c;i++) { int x,y,z; rd(x);rd(y);rd(z); build(x,y,z); build(y,x,z); } dijkstra(ts,te); printf("%d\n",dist[te]);return 0;}
THE END
By Peacefuldoge
http://blog.csdn.net/loi_peacefuldog
1 0
- 【最短路】CODE[VS] 1557 热浪 (Dijkstra模板)
- codevs 1557 热浪(最短路【模板】)
- <最短路模板> 热浪
- 【图论】CODE[VS] 1557 热浪 (SPFA模板)
- 洛谷1339 热浪(最短路模板)
- 最短路 dijkstra模板
- Dijkstra 模板 最短路
- 最短路~dijkstra模板
- 最短路 Dijkstra模板
- 【最短路】CODE[VS] 1021 玛丽卡 ( Dijkstra )
- dijkstra单源最短路(热浪codevs1557)
- 【最短路(动态规划)】CODE[VS] 1077 多源最短路 (Floyed模板)
- 最短路模板(dijkstra+邻接表)
- Dijkstra最短路模板(lrj)
- hdu 2544 最短路(Dijkstra模板)
- 最短路模板(SPFA+dijkstra)
- hdu2544最短路(Dijkstra模板题)
- Dijkstra(迪杰斯特拉) 最短路+模板
- NRedis-Proxy 高性能Redis 中间件服务
- BZOJ1806: [Ioi2007]Miners 矿工配餐
- 1015: [JSOI2008]星球大战starwar
- 第十二周项目3----图遍历算法实现
- 关于我们写的第一个hello world 的由来
- 【最短路】CODE[VS] 1557 热浪 (Dijkstra模板)
- 《软件开发者路线图》读书随笔
- 关于素数的问题
- C专家编程 九 什么时候数组与指针相同(一)
- SQL 结果集合操作
- OpenGL绘制一张图片的流程--以android-openGL-canvas为例
- Linux的特殊权限(suid、sgid、sticky)
- 并查集
- Ubuntu14.04下 ROS indigo使用kinect 亲测好用