洛谷P4779 Dijkstra 模板
这道题很久之前做过
今天复习(复读)一遍
有疑问的就是pair的专属头文件#include<utility>
但是据说iostream和vector等已经包含了这个
#include<queue> //据说pair有专门的头文件utility,但是交到洛谷上就变成了queue
#include<queue>
#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
using namespace std;
priority_queue<pair<int,int> > q; //pair用堆优化(这是一个优先队列从大到小
struct edge{
int next,to,dis;
};
edge e[200800];
int head[1000010];
int d[100800],vis[100800];
int s;
int size,n,m;
void addedge(int next,int to,int dis) //链表加边 如果不清楚的话墙裂安利自己手动模拟运算一下
//或者用Excel手算,新手不明白的原因是这种做法是把先加的边放在最底下,head[点]以及next[点]存的是该点的数组下标
//而to存的是这个点
{
e[++size].next=head[next];
e[size].to=to;
e[size].dis=dis;
head[next]=size;
}
void dij(int start)
{
memset(d,0x3f,sizeof(d));
memset(vis,0,sizeof(vis));
d[start]=0; //我 到 我自己 没有距离
q.push(make_pair(0,start));
while(!q.empty())
{
int t=q.top().second;
q.pop();
if(vis[t]) continue; //dij的宗旨是每个点访问一次
vis[t]=1;
for(int i=head[t];i;i=e[i].next)
{
int y=e[i].to;
int k=e[i].dis;
if(d[y]>d[t]+k) //如果一个路线比你短,还比你经过的点多(划去)
{
d[y]=d[t]+k;
q.push(make_pair(-d[y],y)); //例如3比5小,但是-3比-5大
}
}
}
}
int main()
{
cin>>n>>m>>s;
for(int i=1;i<=m;i++)
{
int tx,ty,tdis;
scanf("%d %d %d",&tx,&ty,&tdis);
addedge(tx,ty,tdis);
}
dij(s);
for(int i=1;i<=n;i++)
printf("%d ",d[i]);
return 0;
}
赋初值用 63是用二进制赋值变成2^6-1(占7个)至于不是127是因为第一个int数组里面存的是正负如果用127可能弄出负值
洛谷P4779 Dijkstra 模板的更多相关文章
- 洛谷 P4779【模板】单源最短路径(标准版)
洛谷 P4779[模板]单源最短路径(标准版) 题目背景 2018 年 7 月 19 日,某位同学在 NOI Day 1 T1 归程 一题里非常熟练地使用了一个广为人知的算法求最短路. 然后呢? 10 ...
- 洛谷P4779 【模板】单源最短路径
P4779 [模板]单源最短路径(标准版) 题目链接 https://www.luogu.org/problemnew/show/P4779 题目描述 给定一个 N个点,M条有向边的带非负权图,请你计 ...
- 洛谷 P4779 【模板】单源最短路径(标准版) 题解
P4779 [模板]单源最短路径(标准版) 题目背景 2018 年 7 月 19 日,某位同学在 NOI Day 1 T1 归程 一题里非常熟练地使用了一个广为人知的算法求最短路. 然后呢? 100 ...
- l洛谷P4779 【模板】单源最短路径(标准版)(dijkstra)
题目描述 给定一个 NN 个点,MM 条有向边的带非负权图,请你计算从 SS 出发,到每个点的距离. 数据保证你能从 SS 出发到任意点. 输入格式 第一行为三个正整数 N, M, SN,M,S. 第 ...
- [洛谷P4779]【模板】单源最短路径(标准版)
题目大意:单元最短路径(卡$SPFA$) 题解:$dijkstra$($\underline{\hspace{0.5em}}\underline{\hspace{0.5em}}gnu\underlin ...
- 最小生成树 & 洛谷P3366【模板】最小生成树 & 洛谷P2820 局域网
嗯... 理解生成树的概念: 在一幅图中将所有n个点连接起来的n-1条边所形成的树. 最小生成树: 边权之和最小的生成树. 最小瓶颈生成树: 对于带权图,最大权值最小的生成树. 如何操作? 1.Pri ...
- 洛谷 P3377 【模板】左偏树(可并堆)
洛谷 P3377 [模板]左偏树(可并堆) 题目描述 如题,一开始有N个小根堆,每个堆包含且仅包含一个数.接下来需要支持两种操作: 操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(若第x或 ...
- 洛谷 P3370 【模板】字符串哈希
洛谷 P3370 [模板]字符串哈希 题目描述 如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字.大小写字母,大小写敏感),请求出N个字符串中共有多少个不同的字符串. 友情提醒:如果真的 ...
- 洛谷P3369 【模板】普通平衡树(Treap/SBT)
洛谷P3369 [模板]普通平衡树(Treap/SBT) 平衡树,一种其妙的数据结构 题目传送门 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入x数 删除 ...
随机推荐
- win32 寄存器
跳转指令分三类: 一.无条件跳转: JMP ;无条件跳转 二.根据CX.ECX寄存器的值跳转: JCXZ ;CX 为 0 则跳转 JECXZ;ECX 为 0 则跳转 三.根据EFLAGS寄存器的PSW ...
- css中常见中文字体的英文名称
曾经看过一些文章,建议CSS中字体应用英文来替代,但一直未引起我重视.最近官网改版,今天同事测试发现Mac的Safari总是显示宋体 → → 修改font-family:"微软雅黑" ...
- ionic之自定义图片
一个好的app,必须都有很好的ui设计师来设计界面,增强客户的体验,表现自己本身公司的特色,但是,在ionic中有些是无法用img标签直接引入图片,只能通过设定的css之后引入css. 页面: < ...
- AJPFX简述Java中this关键字的使用
Java中this关键字的使用主要有两处: 1.构造方法 this指的是调用构造方法进行初始化的对象. //有参构造public Human(String name, int age) { this( ...
- 【转】10种简单的Java性能优化
10种简单的Java性能优化 2015/06/23 | 分类: 基础技术 | 14 条评论 | 标签: 性能优化 分享到: 本文由 ImportNew - 一直在路上 翻译自 jaxenter.欢迎加 ...
- Spring-bean(一)
配置形式:基于xml文件的方式:基于注解的方式 Bean的配置方式:通过全类名(反射),通过工厂方法(静态工厂方法&实例工厂方法),FactoryBean 依赖注入的方式:属性注入,构造器注入 ...
- chrome inspect出现白屏的解决方案
点inspect后 弹出框,可是里面一片白色 PS:原效果不是这样,只是图找不到随便p的 原因可以看这个:http://www.cnblogs.com/slmk/p/7591126.html 大概意思 ...
- TabLayout.Tab(自定义)点击事件
TabLayout是官方design包中的一个布局控件,这里不介绍它的基本使用,只是解决Tab(自定义)点击事件. //获取Tab的数量 Int tabCount = tabLayout.getTab ...
- OCP 11g 第二章练习
练习 2-1 在Windows计算机上安装SQL Developer 在本练习中,将在Windows计算机上安装SQL Developer 1. 从以下URL下载当前SQL Developer版本: ...
- python3 进程与线程
1.进程定义 狭义的定义: 进程是正在运行的程序的实例. 广义的定义:进程是一个具有 一定独立功能的程序关于某个数据集合的一次运行活动.它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体.它 ...