【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博客才会做... 这题如果直接爆算做显然行不通 如果只有单次询问,我们就可以 ...
随机推荐
- java基础—object类
一.Object类介绍
- Sorted Union-freecodecamp算法题目
Sorted Union 1.要求 写一个 function,传入两个或两个以上的数组,返回一个以给定的原始数组排序的不包含重复值的新数组. 换句话说,所有数组中的所有值都应该以原始顺序被包含在内,但 ...
- 【二分 最小割】cf808F. Card Game
Digital collectible card games have become very popular recently. So Vova decided to try one of thes ...
- linux关于yum
yum仓库设置:1.cd /etc/yum.repos.d yum仓库 2.CentOS-Base.repo 网络源 CentOS-Media.repo 光盘源 设置 vi CentOS-Media. ...
- vue渲染函数&JSX
Vue推荐在绝大多数情况下使用template来创建你的HTML.然而在一些场景中,你真的需要JavaScript的完全编程能力,这时你可以使用render函数,它比template跟接近编译器. 虚 ...
- Maven配置项目依赖使用本地仓库的方法汇总
Maven配置项目使用本地仓库有以下方式实现: 1.类似本地仓库,但是属于本地依赖,比如某个JAR包是引用第三方的,直接放在了项目的lib文件夹,那么此时可以如下配置项目的POM: <depen ...
- set 方法总结整理
#!/usr/bin/env python __author__ = "lrtao2010" #Python 3.7.0 集合常用方法 #集合是无序的,元素不能重复,元素只能是数字 ...
- solr7.7.1完整教程
安装 上传solr-7.7.1.tgz至服务器 opt文件加下 解压 tar -zxvf solr-7.7.1.tgz 运行 进入到加压后的文件夹/opt/solr-7.7.1,执行一下命令启动sol ...
- cyg-apt update 升级报错
现象: $ cyg-apt updatecyg-apt: downloading: http://box-soft.com/setup-2.bz2cyg-apt: downloading: http: ...
- loj2000 「SDOI2017」数字表格
there #include <iostream> #include <cstring> #include <cstdio> using namespace std ...