dijkstra (模板)
突然意识到以前写的都是假的dij,感谢GhostCai神犇。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#define int long long using namespace std;
const int MAXN = ;
const int MAXM = ;
const int inf = ; inline int rd(){
int x=,f=;char ch=getchar();
while(!isdigit(ch)) {f=ch=='-'?:;ch=getchar();}
while(isdigit(ch)) {x=(x<<)+(x<<)+ch-'';ch=getchar();}
return f?x:-x;
} int n,m,S,dis[MAXN],head[MAXN],cnt;
int to[MAXM],nxt[MAXM],val[MAXM];
bool vis[MAXN]; struct Node{
int id,w;
friend bool operator<(const Node A,const Node B){
return A.w>B.w;
}
}; inline void add(int bg,int ed,int w){
to[++cnt]=ed,nxt[cnt]=head[bg],head[bg]=cnt,val[cnt]=w;
} priority_queue<Node> Q; void dijkstra(){
for(int i=;i<=n;i++) dis[i]=inf;
Node now;now.id=S;now.w=;dis[S]=;
int p,ww;Q.push(now);
while(!Q.empty()){
Node x=Q.top();Q.pop();p=x.id;ww=x.w;
if(vis[p] || dis[p]!=ww) continue;
vis[p]=;int u;
for(register int i=head[p];i;i=nxt[i]){
u=to[i];
if(dis[p]+val[i]<dis[u]) {
dis[u]=dis[p]+val[i];
now.id=u;now.w=dis[u];
Q.push(now);
}
}
}
} signed main(){
n=rd(),m=rd(),S=rd();int x,y,z;
for(int i=;i<=m;i++){
x=rd(),y=rd(),z=rd();
add(x,y,z);
}
dijkstra();
for(int i=;i<=n;i++) printf("%lld ",dis[i]);
return ;
}
dijkstra (模板)的更多相关文章
- HDU-2544 最短路 Dijkstra模板题
题目链接:https://vjudge.net/problem/HDU-2544 题意: 题目要求找到节点1到节点n之间的一条最短路 分析: Dijkstra模板题 单源最短路径,可以用dijkstr ...
- Dijkstra 模板 最短路
转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents ------------------------------------------ ...
- hdu 2544 hdu 1874 poj 2387 Dijkstra 模板题
hdu 2544 求点1到点n的最短路 无向图 Sample Input2 1 //结点数 边数1 2 3 //u v w3 31 2 52 3 53 1 20 0 Sample Output32 ...
- 单源最短路——Dijkstra模板
算法思想: 类似最小生成树的贪心算法,从起点 v0 每次新拓展一个距离最小的点,再以这个点为中间点,更新起点到其他点的距离. 算法实现: 需要定义两个一维数组:①vis[ i ] 表示是否从源点到顶点 ...
- 51nod 1459 迷宫游戏 dijkstra模板
链接:迷宫游戏 问题 - 51Nod http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1459 1459 迷宫游戏 基准 ...
- CCCC L2-001 紧急救援 floyd改的dijkstra模板 (记录路径) L3 天梯地图
https://www.patest.cn/contests/gplt/L2-001 题解:求最短路的条数,并输出点的权值最大的路径,用priority_queue会wa两个点,原因不明. 于是又学了 ...
- Dijkstra模板 dj斯特拉
图论里非常常用的dijkstra,自己加了个路径查找,做个模板吧: ; struct Edge { int from,to,dist; Edge(int u, int v, int d):from(u ...
- 洛谷 P3371 【模板】单源最短路径(弱化版) && dijkstra模板
嗯... 题目链接:https://www.luogu.org/problem/P3371 没什么好说的,这是一个最短路的模板,这里用的dijkstra做的... 注意: 1.dijkstra和邻接表 ...
- HDU 2544 最短路 【Dijkstra模板题】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2544 思路:最短路的模板题 Dijkstra 算法是一种类似于贪心的算法,步骤如下: 1.当到一个点时, ...
- 最短路(Dijkstra模板题)
就不写题目链接了 Sample Input 5 5 点个数a,边个数b 1 2 20 点,点,权值 2 3 30 3 4 20 4 5 20 1 5 100 求出1到a的最短距离 Sample Out ...
随机推荐
- day 90 跨域和CORS
跨域和CORS 本节目录 一 跨域 二 CORS 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 跨域 同源策略(Same origin policy)是一种约定,它是 ...
- Python3 From Zero——{最初的意识:005~文件和I/O}
一.输出重定向到文件 >>> with open('/home/f/py_script/passwd', 'rt+') as f1: ... print('Hello Dog!', ...
- 拾遗:Unix 守护进程编写规范
//标准库自带函数,通常以 daemon(0, 0) 方式调用 int daemon(int nochdir, int noclose) Linux: #include <unistd.h> ...
- Centos 7 ping 不通外网
首先检查添加DNS是否正常,如不存在则添加dns: [root@cgls]# vim /etc/resolv.conf nameserver 114.114.114.114 nameserver 8. ...
- codeforces round#524 D - Olya and magical square /// 大概算是数学规律题?
题目大意: t 个测试用例 (1≤t≤103) 给定n k (1≤n≤10^9,1≤k≤10^18) 表示有一个边长为2^n的正方形格子 每次操作只能将一个格子切割为左上左下右上右下的四等分格子 ...
- Reverses CodeForces - 906E (最小回文分解)
题意: 给你两个串s和t,其中t是由s中选择若干个不相交的区间翻转得到的,现在要求求出最少的翻转次数以及给出方案. 1≤|s|=|t|≤500000 题解: 我们将两个字符串合成成T=s1t1s2t2 ...
- 将数据写到kafka的topic
package test05 import java.util.Propertiesimport org.apache.kafka.clients.producer.{KafkaProducer, P ...
- 2019-8-16-调试时限制程序使用-CPU-核心数模拟低端设备
title author date CreateTime categories 调试时限制程序使用 CPU 核心数模拟低端设备 lindexi 2019-08-16 16:11:32 +0800 20 ...
- 深度探索C++对象模型之第二章:构造函数语意学之成员初始值列表
当我们需要设置class member的初值时,要么是经过member initialization list ,要么在construcotr内. 一.先讨论必须使用member initializa ...
- Error: Cannot find module '@babel/core'
报错如下 产生原因 babel-loader和babel-core版本不对应所产生的, babel-loader 8.x对应babel-core 7.x babel-loader 7.x对应babel ...