貌似一直不写题解不太好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. netty学习之路

    Netty是一个高效的提供异步事件驱动的网络通信框架,换言之,Netty是一个nio实现框架并且能简化传统的TCP.UDP.Socket编程.

  2. 分布式服务框架:Zookeeper简介

    分布式服务框架:Zookeeper(分布式系统的可靠协调系统) 本文导读: 1 Zookeeper概述 2 Zookeeper总体结构 ——逻辑图.运转流程.特点.优点.数据结构 3 Zookeepe ...

  3. Django - 环境搭建、url、视图、模板、标签、过滤器

    (一).简介 简介就不多说了,网上的内容一大堆.总结来说,django是走大而全的路线,写项目超级快,几乎什么都为你考虑到了,你就乖乖照着它的格式来写就行了. 这里来一些基本认知: web应用框架(w ...

  4. Kotlin——高级篇(四):集合(Array、List、Set、Map)基础

    在实际的项目开发中,集合的运用可以说是多不胜数.不过Kotlin中的集合运用和Java中还是有很大的差别,他们两者之间,除了集合的类型相同以外,还包含集合的初始化的不同,以及Kotlin对于集合封装特 ...

  5. Angular入门(三) 引入boostrap4

    1.cnpm install ngx-bootstrap bootstrap --save ※可能缺少jquery  cnpm i jquery 2.  打开 angular-cli.json (项目 ...

  6. IOS数据持久化之归档NSKeyedArchiver, NSUserDefaults,writeToFile

    //2.文件读写 //支持:NSString, NSArray , NSDictionay, NSData //注:集合(NSArray, NSDictionay)中得元素也必须是这四种类型, 才能够 ...

  7. link options and how g++ is invoked gcc g++

    yum install gcc yum install gcc-c++ yum reinstall gcc gcc-c++ Downloading packages:(1/2): gcc-c++-4. ...

  8. table width 决定 td width

    w td width 有无在chrome edge ff 均未影响td实际宽度,td接近等比分配table width. <!doctype html> <html lang=&qu ...

  9. pycharm调试

    pycharm调试 flask app调试: 1.打开edit configurations面板 run===>edit configurations(图一或图二处都可以) 2.配置项目信息 点 ...

  10. vue事件修饰器

    事件修饰器 Vue.js 为 v-on 提供了 事件修饰符.通过由点(.)表示的指令后缀来调用修饰符.· .stop .prevent .capture .self <div id=" ...