P4779 【模板】单源最短路径(标准版)

求单源最短路, 输出距离

Solution

\(nlogn\) 堆优化 \(Djs\)

Code

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
typedef long long LL;
using namespace std;
LL RD(){
LL out = 0,flag = 1;char c = getchar();
while(c < '0' || c >'9'){if(c == '-')flag = -1;c = getchar();}
while(c >= '0' && c <= '9'){out = out * 10 + c - '0';c = getchar();}
return flag * out;
}
const LL maxn = 1000019,INF = 0xfffffffffffffff;
LL head[maxn],nume = 1;
struct Node{
LL v,dis,nxt;
}E[maxn << 3];
void add(LL u,LL v,LL dis){
E[++nume].nxt = head[u];
E[nume].v = v;
E[nume].dis = dis;
head[u] = nume;
}
LL num, nr, s;
bool vis[maxn];
LL d[maxn];
struct node{
LL u, d;
bool operator < (const node &a)const{
return d > a.d;
}
};
void Djs(LL s){
for(LL i = 1;i <= num;i++)d[i] = INF;
priority_queue<node>Q;
d[s] = 0;
Q.push((node){s, d[s]});
while(!Q.empty()){
LL u = Q.top().u;Q.pop();
if(vis[u])continue;
vis[u] = 1;
for(LL i = head[u];i;i = E[i].nxt){
LL v = E[i].v, dis = E[i].dis;
if(d[u] + dis < d[v]){
d[v] = d[u] + dis;
Q.push((node){v, d[v]});
}
}
}
}
int main(){
num = RD();nr = RD();s = RD();
for(int i = 1;i <= nr;i++){
LL u = RD(), v = RD(), dis = RD();
add(u, v, dis);
}
Djs(s);
for(int i = 1;i <= num;i++)printf("%lld ", d[i]);
return 0;
}

最新文章

  1. 20155324王鸣宇对C语言课程回顾及对Java的展望
  2. 烂泥:Postfix邮件服务器搭建之准备工作
  3. fir.im Weekly - iOS 保持界面流畅的技巧
  4. 用命令实现SQLServerr的备份与还原
  5. 递推DP URAL 1009 K-based Numbers
  6. MYSQL 当有两条重复数据时 保留一条
  7. Orchard官方文档
  8. 在Windows下用Mingw 4.5.2编译X264
  9. WiFi与WLAN的区别
  10. All consistent reads within the same transaction read the snapshot established by the first read.
  11. Android 异步链式调用设计
  12. Hadoop学问Eclipse构建Hadoop工程
  13. 让人恼火的经历——手机H5网页被注入广告
  14. 机器学习 ML.NET 发布 1.0 RC
  15. IIS服务器的安全保护措施
  16. python &amp; MySQLdb(Three)
  17. CentOS7 下安装mysql历程
  18. java (Eclipse)连接MySQL数据库
  19. (转)Ubuntu 16.04 安裝Docker(PS:本文适用amd64位的ubuntu系统)
  20. luoguP2781 传教

热门文章

  1. js获取浏览器窗口属性
  2. angularJS1笔记-(18)-$http及用angular实现JSONP跨域访问过程
  3. Objective-C KVC讲解,包你看懂会用
  4. React鼠标事件
  5. 解决java使用Runtime.exec执行linux复杂命令不成功问题
  6. JPEG标准推荐的亮度、色度DC、AC Huffman编码表
  7. 词频统计Web工程
  8. [转帖] IIS 与 HTTP/2 的介绍.
  9. [转帖]Cookies和Session的区别和理解
  10. vmware 已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作。