貌似一直不写题解不太好QAQ 但是找不到题啊...

随便写点水题来补博客吧

题目不pa了,点链接吧...

点我看题

很明显这是道sb题...

思路:  对于每一个僵尸城市预处理其 s 距离内的城市,然后用个cost数组记录点权,然后直接跑spfa就好了。

看下数据,可以发现如果k值较大有可能会TLE(没测不知道QAQ)。所以加个简单的优化就可以吧(可能吧QAQ)。

简单的优化就是在预处理的时候如果某一个僵尸城市 s 距离内的城市有另外的僵尸城市,辣么这个僵尸城市可以不入队,这样可以少掉一点重复的无效搜索。

依旧看一下数据 发现答案会爆 int 所以就记得开 int64(long long)。

所以看数据是可以看出坑点的... (完美避开=v=

然后直接代码吧。

type
node=record
y:longint;
next:longint;
end;
var n,m,k,s:longint;
tot:longint;
cost1,cost2:longint;
x,y:longint;
i:longint;
cost,first,a:array[..]of longint;
q:array[..]of longint;
e:array[..]of node;
dist:array[..]of int64;
v:array[..]of boolean;
procedure adde(x,y:longint);
begin
e[tot].next:=first[x];
e[tot].y:=y;
first[x]:=tot;
inc(tot);
end;
procedure bfs(x:longint);
var head,tail:longint;
now,y,i:longint;
begin
head:=;
tail:=;
for i:= to n do
dist[i]:=-;
dist[x]:=;
q[]:=x;
while head<=tail do
begin
now:=q[head];
i:=first[now];
while i<>- do
begin
y:=e[i].y;
if (dist[y]<)and(cost[y]>=) then
begin
dist[y]:=dist[now]+;
cost[y]:=cost2;
if dist[y]<s then
begin
inc(tail);
q[tail]:=y;
end;
end;
i:=e[i].next;
end;
inc(head);
end;
end;
procedure spfa(s:longint);
var
head,tail:longint;
now,y,i:longint;
begin
head:=;
tail:=;
for i:= to n do
begin
dist[i]:= << ;
v[i]:=false;
end;
dist[s]:=;
q[]:=s;
v[s]:=true;
while head<=tail do
begin
now:=q[head];
i:=first[now];
while i<>- do
begin
y:=e[i].y;
if (dist[y]>dist[now]+cost[y])and(cost[y]>=) then
begin
dist[y]:=dist[now]+cost[y];
if not v[y] then
begin
inc(tail);
q[tail]:=y;
v[y]:=true;
end;
end;
i:=e[i].next;
end;
inc(head);
v[now]:=false;
end;
end; begin
read(n,m,k,s);
read(cost1,cost2);
for i:= to k do
begin
read(a[i]);
cost[a[i]]:=-;
end;
for i:= to n do
first[i]:=-;
for i:= to m do
begin
read(x,y);
adde(x,y);
adde(y,x);
end;
for i:= to k do
bfs(a[i]);
for i:= to n do
if cost[i]= then cost[i]:=cost1;
spfa();
writeln(dist[n]-cost[n]);
end.

洛谷P3393逃离僵尸岛 最短路的更多相关文章

  1. 洛谷 P3393 逃离僵尸岛

    洛谷 这道题目其实是最短路裸题. 首先看到题目,要求的到"被占点"距离不大于S的点,自然想到了以"被占点"为源点,求一遍最短路,处理出"危险点&quo ...

  2. 洛谷P3393 逃离僵尸岛

    题目描述 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被僵尸控制了,如果贸然闯入 ...

  3. [题解] 洛谷 P3393 逃离僵尸岛

    题目TP门 很明显是一个最短路,但是如何建图才是关键. 对于每一个不可遍历到的点,可以向外扩散,找到危险城市. 若是对于每一个这样的城市进行搜索,时间复杂度就为\(O(n^2)\),显然过不了.不妨把 ...

  4. 洛谷⑨月月赛Round2 P3393逃离僵尸岛[最短路]

    题目描述 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被僵尸控制了,如果贸然闯入 ...

  5. P3393 逃离僵尸岛

    P3393 逃离僵尸岛 啊.好久不写dij手都生了 这道题就是预先处理出是否是危险城市,然后跑一个最短路就行了 然后因为我感觉这个对时间要求不大紧.判断危险城市时就写了个电风扇(DFS) 然后T飞了呜 ...

  6. luogu P3393 逃离僵尸岛-搜索剪枝+spfa

    P3393 逃离僵尸岛 题目描述 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被 ...

  7. luogu P3393 逃离僵尸岛

    luoguP3393逃离_僵尸岛_ 一道洛谷不知道哪门子月赛的题 可以用此题来练习最短路算法 SPFA和dijkstra的练习题(关于Floyed,他死了 思路: 本题是最短路板子. 首先就是建立虚点 ...

  8. Luogu P3393 逃离僵尸岛【最短路】By cellur925

    题目传送门 题目大意:(其实概括出来也就基本做完了hh)在一张有$n$个点,$m$条边的无向图上,有$k$个点是不能经过的,而与之距离不超过$s$的点,到他们会花费$Q$元,到其他点会花费$p$元,求 ...

  9. 【luogu P3393 逃离僵尸岛】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3393 被占领的点可以先连在一个点上然后只需要对这一个点bfs一遍就可以求所有的危险点 #include &l ...

随机推荐

  1. pycharm 相关设置问题

    pycharm设置自动换行 file→settings→Editor→General→勾选 Use soft wraps in eitor → ok

  2. FZU1465

    题目链接:传送门 题目大意:给你n个整数(可正可负),求有多少个连续的子序列的和==m(时限1S) 题目思路:前缀和+手写hash(map效率太慢,会超时) 具体做法是用一个数组sum,数组的第i位保 ...

  3. mysql返回字符串在另外一个字符串中第n次出现的方法。

    SELECT SUBSTRING_INDEX("迟到50分钟,早退15分钟","分钟",2); 返回:迟到50分钟,早退15

  4. InetAddress类和InetSocketAddress的使用

    一简介 InetAddress是Java对IP地址的封装,代表互联网协议(IP)地址:InetAddress对象的获取只能通过静态方法,比如根据主机名获取主机的ip地址封装对象: ? 1 InetAd ...

  5. php获取本地IP

    function get_local_ip() { $preg = "/\A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3 ...

  6. 并发编程7 管道&事件&信号量&进程池(同步和异步方法)

    1,管道 2.事件 3.信号量 4.进程池的介绍&&进程池的map方法&&进程池和多进程的对比 5.进程池的同步方法和异步方法 6.重新解释同步方法和异步方法 7.回调 ...

  7. 巨蟒python全栈开发数据库攻略4:多表操作&Navicat&pymysql

    1.多表查询 2.连表补充 3.boss工具=>Navicat 4.索引加速寻找工具=>everything 5.pymysql 6.pymysql初识 7.pymysql的各个方法

  8. Redis 教程

    http://www.runoob.com/redis/redis-tutorial.html Redis系列(一)--安装.helloworld以及读懂配置文件 再开个redis系列,本系列打算不详 ...

  9. <2014 05 21> 互联网时代的C语言——Go

    Go希望成为互联网时代的C语言. 多数系统级语言(包括Java和C#)的根本编程哲学来源于C++,将C++的面向对象进一步发扬光大.但是Go语言的设计者却有不同的看法,他们认为C++ 真的没啥好学的, ...

  10. DHTML 简介

    DHTML, 动态的 html, 不是一门语言, 是多项技术综合体的简称.其中包括了 html, CSS, DOM, javascript. HTML : 负责提供标签, 对数据进行封装,目的是便于对 ...