最短路径例题

今天特地学习了Dijkstra的堆优化(主要是慕名已久)。

我们需要一个堆来记录[编号,到编号这个点的最短路径值(当然只是当前的)]

与原来的Dijkstra操作基本一致,主要有以下几点:

1.将起点放入堆中

2.开始while循环

3.取出堆顶

4.如果已经拓展过就continue

5.松弛操作同时满足条件放入堆

6.repeat step3

code

#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
struct node{
int val,num;
bool operator <(const node &x) const {
return val>x.val;
}
};
priority_queue< node > dij;
vector <pair<int,int> >a[];
int n,m,s,dist[],done[];
int main(){
scanf("%d%d%d",&n,&m,&s);
for(int i=;i<=m;i++){
int x,y,c;
scanf("%d%d%d",&x,&y,&c);
a[x].push_back(make_pair(y,c));
}
for(int i=;i<=n;i++)dist[i]=;
dist[s]=;
dij.push((node){,s});
while(!dij.empty()){
int front=dij.top().num;
dij.pop();
if(done[front])continue;
done[front]=true;
for(int i=;i<a[front].size();i++){
int to=a[front][i].first,vl=a[front][i].second;
if(!done[to]&&dist[front]+vl<dist[to]){
dist[to]=dist[front]+vl;
dij.push((node){dist[to],to});
}
}
}
for(int i=;i<=n;i++)printf("%d ",dist[i]);
return ;
}

Dijkstra堆优化学习的更多相关文章

  1. POJ 2502 - Subway Dijkstra堆优化试水

    做这道题的动机就是想练习一下堆的应用,顺便补一下好久没看的图论算法. Dijkstra算法概述 //从0出发的单源最短路 dis[][] = {INF} ReadMap(dis); for i = 0 ...

  2. Bzoj 2834: 回家的路 dijkstra,堆优化,分层图,最短路

    2834: 回家的路 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 62  Solved: 38[Submit][Status][Discuss] D ...

  3. POJ2387(dijkstra堆优化)

    Til the Cows Come Home Bessie is out in the field and wants to get back to the barn to get as much s ...

  4. hdu 2544 单源最短路问题 dijkstra+堆优化模板

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  5. 深入理解dijkstra+堆优化

    深入理解dijkstra+堆优化 其实就这几种代码几种结构,记住了完全就可以举一反三,所以多记多练多优化多思考. Dijkstra   对于一个有向图或无向图,所有边权为正(边用邻接矩阵的形式给出), ...

  6. dijkstra堆优化(multiset实现->大大减小代码量)

    例题: Time Limit: 1 second Memory Limit: 128 MB [问题描述] 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣 ...

  7. POJ-2387.Til the Cows Come Home.(五种方法:Dijkstra + Dijkstra堆优化 + Bellman-Ford + SPFA + Floyd-Warshall)

    昨天刚学习完最短路的算法,今天开始练题发现我是真的菜呀,居然能忘记邻接表是怎么写的,真的是菜的真实...... 为了弥补自己的菜,我决定这道题我就要用五种办法写出,并在Dijkstra算法堆优化中另外 ...

  8. POJ 1511 - Invitation Cards 邻接表 Dijkstra堆优化

    昨天的题太水了,堆优化跑的不爽,今天换了一个题,1000000个点,1000000条边= = 试一试邻接表 写的过程中遇到了一些问题,由于习惯于把数据结构封装在 struct 里,结果 int [10 ...

  9. 【Dijkstra堆优化】洛谷P2243电路维修

    题目背景 Elf 是来自Gliese 星球的少女,由于偶然的原因漂流到了地球上.在她无依无靠的时候,善良的运输队员Mark 和James 收留了她.Elf 很感谢Mark和James,可是一直也没能给 ...

随机推荐

  1. poj 1182 食物链 带权并查集

    食物链是并查集的进阶运用的一道非常经典的题目. 题目如下: 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A, ...

  2. servlet请求编码与响应编码问题(编码不一致可能会导致乱码)

    html中的编码 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&g ...

  3. JAVA通过I/O流复制文件

    JAVA通过I/O流复制文件 本文是对字节流操作,可以多音频视频文件进行操作,亲测有效. 个人感觉这个东西就是靠记的, 没什么好解释的,,,, import java.io.File; import ...

  4. 每次启动懂maven项目都必须关闭javaw.exe进程

    最近几天一致在搞配置问题,今天总于解决了.下面说问题: 我发现我每次配置完maven build的goals运行,总是会出现TOMCAT绑定接口问题,我做的方法就是不断地关掉JAVAw.exe进程.但 ...

  5. java语言基础(变量和运算符)

    java八大基本数据类型: 整型{   int(整型)    short(短整型)   long(长整型)} 浮点型{ float(浮点型)   double(双精度)} 布尔{boolean}   ...

  6. MVC分页示例

    分页说明 对于大多数非枚举数据,我们都需要进行分页管理.在WEBFORM时代,有GridView,也可以配合AspNetPager很方便的实现分页,到了MVC,也同样可以使用MVCPager,作者都是 ...

  7. LINUX服务器上新增用户名

    最近所里的机群停了,需要用老板的服务器跑程序,这里首先得在老板的服务器上新增一些用户名.新增用户名方法如下: 1.利用useradd添加用户名,并指定用户名目录.脚本解释器.用户名 sudo user ...

  8. Apache开启压缩功能

    起源 在一般的web服务器中,都会开启压缩功能,也就是deflate或者是gzip的压缩. 开启压缩功能主要的目的是为了减少传输的带宽,从而当服务器响应给客户端的时候,会大大减少传输的数据,代价就是在 ...

  9. (三)、LNMP的搭建,并制作rpm包

    中小型规模网站集群架构:yum仓库搭建 : 矮哥linux运维群:93324526 编译的三条命令的规则 ./configure 就是在本地创建了一个Makefile文件 (也就是指定一下各种配置参数 ...

  10. unix下的文件和目录详解以及操作方法

    前言:unix下一切东西都是文件,一共有7种不同的文件,前一篇博客已经讲解的很清楚了,不懂的可以看看这里.当然,博主知道有些朋友比忙,没时间看,那我就简单点讲讲这7中文件都有哪些吧. 文件类型包括在s ...