[luogu3393]逃离僵尸岛

luogu

先把被禁止的点和新建的虚点n+1连0边

跑最短路,dis<=s的点价格为Q,否则为P,

再建图跑最短路

#define ll long long
#include<bits/stdc++.h>
using namespace std;
const int N=100005,M=500005;
int re(){
int x=0,w=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
return x*w;
}
int n,m,k,len,cnt,P,Q;
int h[N],a[M],b[M],val[N];
ll d[N];
bool ban[N],vis[N];
struct node{ll id,d;};
struct edge{int to,next,w;}e[M];
bool operator <(node x,node y){return x.d>y.d;}
priority_queue<node>q;
void link(int u,int v,int w){
e[++cnt]=(edge){v,h[u],w};h[u]=cnt;
}
void dij(int s){
memset(vis,0,sizeof(vis));
memset(d,127,sizeof(d));d[s]=0;
q.push((node){s,0});
while(!q.empty()){
int u=q.top().id;q.pop();
if(vis[u])continue;vis[u]=1;
for(int i=h[u];i;i=e[i].next){
int v=e[i].to;
if(d[v]>d[u]+e[i].w){
d[v]=d[u]+e[i].w;
q.push((node){v,d[v]});
}
}
}
}
int main(){
n=re(),m=re(),k=re(),len=re();
P=re(),Q=re();
for(int i=1,x;i<=k;i++){
ban[x=re()]=1;
link(n+1,x,0);
}
for(int i=1;i<=m;i++){
a[i]=re(),b[i]=re();
link(a[i],b[i],1);
link(b[i],a[i],1);
}
dij(n+1);cnt=0;memset(h,0,sizeof(h));
for(int i=1;i<=n;i++){
if(d[i]<=len)val[i]=Q;
else val[i]=P;
}
val[n]=val[1]=0;
for(int i=1;i<=m;i++)
if(!ban[b[i]]&&!ban[a[i]]){
link(a[i],b[i],val[b[i]]);
link(b[i],a[i],val[a[i]]);
}
dij(1);
printf("%lld\n",d[n]);
return 0;
}

[luogu3393]逃离僵尸岛的更多相关文章

  1. P3393 逃离僵尸岛

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

  2. AC日记——逃离僵尸岛 洛谷 P3393

    逃离僵尸岛 思路: spfa: 代码: #include <cstdio> #include <cstring> #include <iostream> #incl ...

  3. 最短路【洛谷P3393】 逃离僵尸岛

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

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

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

  5. luogu P3393 逃离僵尸岛

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

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

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

  7. 【图论-最短路】【P3393】逃离僵尸岛

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

  8. Bfs+最短路【p3393】 逃离僵尸岛

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

  9. 洛谷P3393 逃离僵尸岛

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

随机推荐

  1. fabricjs line

    let line1 = new fabric.Line([lineleft, lineheight, lineleft, 0], {//终止位置,线长,起始位置,top,这里是从项目中截下来的我用了变 ...

  2. java中按字节获得字符串长度的两种方法 Java问题通用解决代码

    jdk本身就自带获取字符串字节长度的api了,但字符串如果包含特殊符号或全半角符号或标点符号获取到的结果会有偏差,最好的证据就是新浪微博的字数统计了 // jdk自带的获取字节长度 //注意getBy ...

  3. ListView知识点汇总(9.2)

    1 最为基础的listview: http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html http://blog.csdn.net/h ...

  4. Android---06---2中动画效果

    1,先看FrameAnimation,此动画是用来实现动态动画就是把一帧帧图片迭代起来 放在drowable中的xml: <?xml version="1.0" encodi ...

  5. Extjs4 Combobox 联动始终出现loading错误的解决的方法

    当反复选者combobox 联动时,下级的Combobox 会出现loading的错误表现形式,尽管Store数据已载入完也是一样. 废话少说贴代码就知道怎样处理了:(注意红色部分的关键语句) }, ...

  6. 详述Centos中的ftp命令的使用方法

    ftp服务器在网上较为常见,Linux ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件,这里详细介绍Linux ftp命令的一些经常使用的命令,相信掌握了这些使用Linux 进行ft ...

  7. python easy install时,使用aliyun阿里云镜像提示主机名不匹配的问题

    因网络问题,因此设置 easy_install 使用阿里云的源, ## 更新 easy_install 源 tee ~/.pydistutils.cfg <<-'EOF' [easy_in ...

  8. 基于vue + axios + lrz.js 微信端图片压缩上传

    业务场景 微信端项目是基于Vux + Axios构建的,关于图片上传的业务场景有以下几点需求: 1.单张图片上传(如个人头像,实名认证等业务) 2.多张图片上传(如某类工单记录) 3.上传图片时期望能 ...

  9. struts2 拦截器,使用spring注入

    ActionContext actionContext = invocation.getInvocationContext();ServletContext context = (ServletCon ...

  10. PHP中Soap模块安装与使用例子

    PHP5中的这个SOAP扩展目的是为了实现PHP对Web services的支持.与其它实现PHP对Web services的支持的方法不同,SOAP扩展是用C写的,因此它比其它方法具有速度优势 SO ...