【CF20C】Dijkstra?(DIJKSTRA+HEAP)
没什么可以说的
做dijk+heap模板吧
以后考试时候看情况选择SFPA和DIJKSTRA
const oo=;
var vet,next,len,w:array[..]of longint;
dis:array[..]of int64;
a:array[..]of int64;
b:array[..]of longint;
inq:array[..]of boolean;
head:array[..]of longint;
n,m,tot,i,x,y,z,tt:longint; procedure add(a,b,c:longint);
begin
inc(tot);
next[tot]:=head[a];
vet[tot]:=b;
len[tot]:=c;
head[a]:=tot;
end; procedure swap(var x,y:int64);
var t:int64;
begin
t:=x; x:=y; y:=t;
end; procedure shiftup(k,m:longint);
begin
while (k>)and(a[k]<a[k div ]) do
begin
swap(a[k],a[k div ]);
tt:=b[k]; b[k]:=b[k div ]; b[k div ]:=tt;
k:=k div ;
end;
end; procedure shiftdown(k,m:longint);
var t:longint;
begin while k+k<=m do
begin
t:=k+k;
if (t+<=m)and(a[t+]<a[t]) then inc(t);
if a[k]>a[t] then
begin
swap(a[k],a[t]);
tt:=b[k]; b[k]:=b[t]; b[t]:=tt;
k:=t;
end
else break;
end;
end; procedure print;
var x,m,i,e,v:longint;
begin
x:=n; m:=; w[]:=n;
while x<> do
begin
e:=head[x];
while e<> do
begin
v:=vet[e];
if dis[v]+len[e]=dis[x] then
begin
inc(m); w[m]:=v;
x:=v;
break;
end;
e:=next[e];
end;
end;
for i:=m downto do write(w[i],' ');
write(w[]);
end; procedure dijkstra;
var m,u,e,v:longint;
begin
fillchar(dis,sizeof(dis),$7f);
fillchar(inq,sizeof(inq),false);
m:=; a[]:=; b[]:=; dis[]:=;
while a[]<oo do
begin
u:=b[]; a[]:=oo; shiftdown(,m);
if inq[u] then continue;
e:=head[u]; inq[u]:=true;
while e<> do
begin
v:=vet[e];
if inq[v] then begin e:=next[e]; continue; end;
if dis[u]+len[e]<dis[v] then
begin
dis[v]:=dis[u]+len[e];
inc(m); a[m]:=dis[v]; b[m]:=v;
shiftup(m,m);
end;
e:=next[e];
end;
end; if dis[n]>oo then writeln(-)
else print;
end; begin
//assign(input,'1.in'); reset(input);
//assign(output,'1.out'); rewrite(output);
readln(n,m);
for i:= to m do
begin
readln(x,y,z);
add(x,y,z);
add(y,x,z);
end;
dijkstra;
//close(input);
//close(output);
end.
【CF20C】Dijkstra?(DIJKSTRA+HEAP)的更多相关文章
- 【BZOJ2599】Race(点分治)
[BZOJ2599]Race(点分治) 题面 BZOJ权限题,洛谷 题解 好久没写过点分治了... 在ppl的帮助下终于想起来了 orz ppl 首先回忆一下怎么求有没有正好是\(K\)的路径 维护一 ...
- 【HDU4622】Reincarnation(后缀自动机)
[HDU4622]Reincarnation(后缀自动机) 题面 Vjudge 题意:给定一个串,每次询问l~r组成的子串的不同子串个数 题解 看到字符串的大小很小 而询问数太多 所以我们预处理任意的 ...
- 【BZOJ2882】工艺(后缀自动机)
[BZOJ2882]工艺(后缀自动机) 题面 BZOJ权限题,良心洛谷 题解 还是一样的,先把串在后面接一遍 然后构建\(SAM\) 直接按照字典序输出\(n\)次就行了 #include<io ...
- 【BZOJ2882】工艺(后缀数组)
[BZOJ2882]工艺(后缀数组) 题面 BZOJ权限题,我爱良心洛谷 题解 最容易的想法: 把字符串在后面接一份 然后求后缀数组就行了... #include<iostream> #i ...
- 【BZOJ3277】串(后缀自动机)
[BZOJ3277]串(后缀自动机) 题面 BZOJ 题解 广义后缀自动机??? 照着别人的打了一遍.. 相当于每个串都构建一个后缀自动机 构建完一个串之后,直接把当前的last指回root就行了?? ...
- 【BZOJ3238】差异(后缀自动机)
[BZOJ3238]差异(后缀自动机) 题面 BZOJ 题解 前面的东西直接暴力算就行了 其实没必要算的正正好 为了方便的后面的计算 我们不考虑\(i,j\)的顺序问题 也就是先求出\(\sum_{i ...
- 【BZOJ3998】弦论(后缀自动机)
[BZOJ3998]弦论(后缀自动机) 题面 BZOJ 题解 这题应该很简单 构建出\(SAM\)后 求出每个点往后还能构建出几个串 按照拓扑序\(dp\)一些就好了 然后就是第\(k\)大,随便搞一 ...
- 【SPOJ】Substrings(后缀自动机)
[SPOJ]Substrings(后缀自动机) 题面 Vjudge 题意:给定一个长度为\(len\)的串,求出长度为1~len的子串中,出现最多的出现了多少次 题解 出现次数很好处理,就是\(rig ...
- 【BZOJ1146】网络管理(整体二分)
[BZOJ1146]网络管理(整体二分) 题面 良心洛谷,有BZOJ权限题 题解 要看树套树的戳这里 毕竟是:智商不够数据结构来补 所以, 我们来当一回智商够的选手 听说主席树的题目大部分都可以整体二 ...
- 【BZOJ2527】MET-Meteors(整体二分)
[BZOJ2527]MET-Meteors(整体二分) 题面 BZOJ权限题,良心洛谷链接 题解 其实我也不会做 看了zsy博客才会做... 这题如果直接爆算做显然行不通 如果只有单次询问,我们就可以 ...
随机推荐
- 用C#(ASP.Net)在Exchange Server环境下发送邮件
普通的邮件, 用System.Net.Mail 类 或 System.Web.Mail 类 处理即可, 但是Exchange Server 环境下, 这两个类起不了作用-------至少目前我看到的情 ...
- java第八次作业:课堂上发布的前5张图片(包括匿名对象、单例模式恶汉式、自动生成对象、args[]数组使用、静态关键字)
- 救援(BFS)
题目描述: 在你的帮助下,Oliver终于追到小X了,可有一天,坏人把小X抓走了.这正是Oliver英雄救美的时候.所以,Oliver又找到哆啦A梦,借了一个机器,机器显示出一幅方格地图,它告诉Oli ...
- paper:synthesizable finit state machine design techniques using the new systemverilog 3.0 enhancements之onehot coding styles(encoded-parameter style with registered outputs不推荐但是经常有人写这样的代码)
这样写法,不利与综合,case语句中比较也是full-vector比较.
- 第3-5课 填充左侧菜单/品牌的添加 Thinkphp5商城第四季
目录 左侧菜单的填充 品牌的添加 form标签里要加上method="post" enctype="multipart/form-data" form标签里如果 ...
- LeetCode(226)Invert Binary Tree
题目 分析 交换二叉树的左右子树. 递归非递归两种方法实现. AC代码 class Solution { public: //递归实现 TreeNode* invertTree(TreeNode* r ...
- Hadoop4.2HDFS测试报告之二
第一组:文件存储写过程记录 测试系统组成 存储类型 测试程序或命令 测试文件大小(Mb) 文件个数(个) 客户端并发数(个) 写速率(M/s) NameNode:1 DataNode:1 本地存储 s ...
- SPOJ FFT TSUM
第一道FFT的题目. 在网上找了很多FFT的资料,但一直都看不懂,最后是看算法导论学的FFT,算法导论上面写的很详细,每一步推导过程都有严格的证明. 下面说这道题 题意: 给一个序列s,有n个不互相同 ...
- nuc 第二届山西省大学生程序设计大赛 魔力手环
problem 很妙啊--发现状态转移矩阵每一行都可以由上一行平移得到,每次只算第一行然后平移,\(O(n^3)\) 就变成了 \(O(n^2)\). #include <iostream> ...
- ogre3D学习基础9 -- 光源程序实例
这一章练习一下光源的使用,光源分为三种:点光源,聚光源,有向光.具体内容前面说过,这里就不解释了. 继续在上一章的程序的基础上实现. 1.创建摄像机(Camera) createCamera()函数是 ...