洛谷

这道题目其实是最短路裸题。

首先看到题目,要求的到“被占点”距离不大于S的点,自然想到了以“被占点”为源点,求一遍最短路,处理出“危险点”。

可是问题来了,“被占点”有k个,总不能求k次最短路吧,于是我就想到,将所有“被占点”归纳在0这一个外加点上,视作一个点,当“被占点”们与其他点连边时,就用0与其相连,“被占点”之间不连边。

然后,跑一边spfa,边权全都是1(当然也可以广搜),再扫一遍,找出危险点。

最后,以1为源点,求一遍最短路,当到达点为“危险点”时,边权为Q,为1或n点时,边权为0,为“被占点”时,边权为inf。输出dis[n]即可。

注意,要开long long~

#include <bits/stdc++.h>
using namespace std; const int N=100010;
const long long inf=214748364701;
queue <int> q;
int n,m,k,ss,P,Q;
long long dis[N],w[N<<2];
int s[N<<2][2],o[N],cnt;
bool ocp[N],vis[N],dgs[N];
inline void add(int,int); inline void spfa(int now)
{
memset(vis,0,sizeof(vis));
for (int i=1;i<=n;++i) dis[i]=inf;
while (!q.empty()) q.pop();
q.push(now);dis[now]=0;vis[now]=1;
while (!q.empty()) {
int x=q.front();
for (int i=o[x];i;i=s[i][1]) {
int y=s[i][0];
if (dis[y]>dis[x]+w[i]) {
dis[y]=dis[x]+w[i];
if (!vis[y])
vis[y]=1,q.push(y);
}
}
vis[x]=0;q.pop();
}
} int main()
{
ios::sync_with_stdio(false);
cin>>n>>m>>k>>ss>>P>>Q;
int x,y;
for (int i=1;i<=k;++i)
cin>>x,ocp[x]=1;
for (int i=1;i<=m;++i) {
cin>>x>>y;
if (ocp[x]&&ocp[y]) continue;
if (ocp[x]) add(0,y),add(y,0);
else if (ocp[y]) add(0,x),add(x,0);
else add(x,y),add(y,x);
}
for (int i=1;i<=cnt;++i) w[i]=1;
spfa(0);
for (int i=1;i<=n;++i)
if (dis[i]<=ss) dgs[i]=1;
for (int i=1;i<=cnt;++i) {
if (dgs[s[i][0]]) w[i]=Q;
else if (ocp[s[i][0]]) w[i]=inf;
else w[i]=P;
if (s[i][0]==1||s[i][0]==n) w[i]=0;
}
spfa(1);
cout<<dis[n]<<endl;
return 0;
} inline void add(int x,int y)
{
s[++cnt][0]=y;s[cnt][1]=o[x];o[x]=cnt;
}

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

  1. 洛谷P3393 逃离僵尸岛

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

  2. 洛谷P3393逃离僵尸岛 最短路

    貌似一直不写题解不太好QAQ 但是找不到题啊... 随便写点水题来补博客吧 题目不pa了,点链接吧... 点我看题 很明显这是道sb题... 思路:  对于每一个僵尸城市预处理其 s 距离内的城市,然 ...

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

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

  4. P3393 逃离僵尸岛

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

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

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

  6. luogu P3393 逃离僵尸岛

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

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

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

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

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

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

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

随机推荐

  1. linux如何手动释放linux内存

    当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching.这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法.那么我来谈谈这个问题 ...

  2. left与margin-left区别

    left,right,top,bottom仅对于position:relative|absolute|fixed的元素有意义. <!DOCTYPE html PUBLIC "-//W3 ...

  3. Android WebView与JavaScript交互实现Web App

    当我们去开发一个基于web的android app时,我们第一须要处理的就是与JavaScript的交互问题.Android须要做的事情就是开放某些特定的接口供web里的JavaScript调用,能够 ...

  4. Atitit.upnp SSDP 查找nas的原理与实现java php c#.net c++

    Atitit.upnp SSDP 查找nas的原理与实现java php c#.net c++ 1. 查找nas的原理1 2. 与dlna的关系1 3. 与ssdp的关系1 4. Cling - Ja ...

  5. Visual Studio - 创建和使用动态库

    一.VS2013 创建动态库 1.1 新建项目 1.2.在Win32应用程序向导对话框上勾选“DLL”和“空项目”复选框,点完成 1.3 .添加对应的.C文件和.h文件 1.4 在.h文件中添加如下代 ...

  6. kafka 部分问题处理记录

    转载请注明原创地址:http://www.cnblogs.com/dongxiao-yang/p/7600561.html 一  broker启动后ReplicaFetcherThread OOM 版 ...

  7. Django学习之第三方储存服务器的使用

    最近,越来越多的公司采用第三方储存来作为视频,图片的储存工具. 国内的像七牛,阿里云的OSS,国外的像亚马逊的S3,微软的azure都是非常有名的第三方储存. 下面以阿里的OSS为例,来介绍第三储存的 ...

  8. unity3d 导入google play services插件工程

    最近在给unity工程尝试接入google play services插件,遇到了些问题,记录一下. 之前在做android插件的时候,都是自己创建一个android工程,把生成的.class文件打包 ...

  9. linq基础,正则表达式,.net相关

    声明扩展方法的步骤:类必须是static,方法是static,第一个参数是被扩展的对象,前面标注this.使用扩展方法的时候必须保证扩展方法类已经在当前代码中using.  LINQ:将int数组中大 ...

  10. C++注释规范

      1 源文件头部注释 列出:版权.作者.编写日期和描述. /************************************************* Copyright:bupt Auth ...