AC日记——逃离僵尸岛 洛谷 P3393
思路:
spfa;
代码:
- #include <cstdio>
- #include <cstring>
- #include <iostream>
- #include <algorithm>
- using namespace std;
- #define maxn 200005
- #define maxque 1800056
- #define INF 1e12
- #define ll long long
- ll n,m,E[maxque],V[maxque],cnt,head[maxn],dis[maxn];
- ll que[maxque],k,s,tag[maxn],Q,P,val[maxn];
- bool if_[maxn];
- inline void in(ll &now)
- {
- char Cget=getchar();now=;
- while(Cget>''||Cget<'') Cget=getchar();
- while(Cget>=''&&Cget<='')
- {
- now=now*+Cget-'';
- Cget=getchar();
- }
- }
- inline void edge_add(ll u,ll v)
- {
- E[++cnt]=head[u],V[cnt]=v,head[u]=cnt;
- E[++cnt]=head[v],V[cnt]=u,head[v]=cnt;
- }
- void spfa1()
- {
- ll h=,tail=,pos,u,v;
- memset(if_,,sizeof(if_));
- for(int i=;i<=n;i++) tag[i]=INF;
- for(ll i=;i<=k;i++) in(pos),que[tail++]=pos,tag[pos]=,if_[pos]=true;
- for(ll i=;i<=m;i++) in(u),in(v),edge_add(u,v);
- while(h<tail)
- {
- ll now=que[h++];if_[now]=false;
- for(ll i=head[now];i;i=E[i])
- {
- if(tag[now]+<tag[V[i]])
- {
- tag[V[i]]=tag[now]+;
- if(!if_[V[i]]) que[tail++]=V[i],if_[V[i]]=true;
- }
- }
- }
- for(ll i=;i<=n;i++)
- {
- dis[i]=INF;
- if(!tag[i]) val[i]=INF;
- else if(tag[i]<=s) val[i]=Q;
- else val[i]=P;
- }
- val[]=,val[n]=;
- }
- void spfa2()
- {
- ll h=,tail=;memset(if_,,sizeof(if_));
- dis[]=,que[tail++]=,if_[]=true;
- while(h<tail)
- {
- ll now=que[h++];if_[now]=false;
- for(ll i=head[now];i;i=E[i])
- {
- if(dis[now]+val[V[i]]<dis[V[i]])
- {
- dis[V[i]]=dis[now]+val[V[i]];
- if(!if_[V[i]]) que[tail++]=V[i],if_[V[i]]=true;
- }
- }
- }
- cout<<dis[n];
- }
- int main()
- {
- in(n),in(m),in(k),in(s),in(P),in(Q),spfa1(),spfa2();
- return ;
- }
AC日记——逃离僵尸岛 洛谷 P3393的更多相关文章
- AC日记——[SDOI2015]星际战争 洛谷 P3324
题目描述 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战. 在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团的阵地,其中第i个巨型机器人的装甲值为Ai.当一个巨型机器人的装甲值 ...
- AC日记——联合权值 洛谷 P1351
题目描述 无向连通图G 有n 个点,n - 1 条边.点从1 到n 依次编号,编号为 i 的点的权值为W i ,每条边的长度均为1 .图上两点( u , v ) 的距离定义为u 点到v 点的最短距离. ...
- AC日记——I Hate It 洛谷 P1531
题目背景 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感. 题目描述 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的 ...
- AC日记——神奇的幻方 洛谷 P2615(大模拟)
题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第一行的中间. ...
- AC日记——[CQOI2009]DANCE跳舞 洛谷 P3153
[CQOI2009]DANCE跳舞 思路: 二分+最大流: 代码: #include <cstdio> #include <cstring> #include <iost ...
- AC日记——松江1843路 洛谷七月月赛
松江1843路 思路: 三分: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 #define ...
- AC日记——严酷的训练 洛谷 P2430
严酷的训练 思路: 背包: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 5005 int n,m,bi[m ...
- AC日记——[SDOI2010]大陆争霸 洛谷 P3690
[SDOI2010]大陆争霸 思路: dijkstra模板: 代码: #include <bits/stdc++.h> using namespace std; #define maxn ...
- AC日记——小魔女帕琪 洛谷 P3802
小魔女帕琪 思路: 概率公式计算: 代码: #include <bits/stdc++.h> using namespace std; ],sig; int main() { ;i< ...
随机推荐
- springMVC js等文件找不到解决方法
<mvc:resources mapping="/javascript/**" location="/static_resources/javascript/&qu ...
- Spark中如何生成Avro文件
研究spark的目的之一就是要取代MR,目前我司MR的一个典型应用场景即为生成Avro文件,然后加载到HIVE表里,所以如何在Spark中生成Avro文件,就是必然之路了. 我本人由于对java不熟, ...
- 教你一步一步在linux中正确的安装Xcache加速php
#第一步,下载Xcache wget http://xcache.lighttpd.net/pub/Releases/3.1.0/xcache-3.1.0.tar.gz #第一步非常简单,如果你下载不 ...
- 【python】Python中给List添加元素的4种方法分享
List 是 Python 中常用的数据类型,它一个有序集合,即其中的元素始终保持着初始时的定义的顺序(除非你对它们进行排序或其他修改操作). 在Python中,向List添加元素,方法有如下4种方法 ...
- 【bzoj1458】士兵占领 有上下界最小流
题目描述 有一个M * N的棋盘,有的格子是障碍.现在你要选择一些格子来放置一些士兵,一个格子里最多可以放置一个士兵,障碍格里不能放置士兵.我们称这些士兵占领了整个棋盘当满足第i行至少放置了Li个士兵 ...
- TCP/IP Note2
TCP/IP寻址 TCP/IP使用32个比特或者4个0到255之间的数字来为计算机编址. 1. IP地址 每个计算机必须有一个IP地址才能够连入Internet中. 每个IP包必须有一个地址才能够发送 ...
- LeetCode--Reverse Linked List(Java)
相似题目: Palindrome Number Valid PalinDrome Reverse Linked List Palindrome Linked List 翻转单链表(要注意的是是否含有头 ...
- [洛谷P1747]好奇怪的游戏
题目大意:有两匹马,马可以走"日",也可以像象走"田",求它走到(1,1)的步数. 题解:bfs 卡点:边界判断成了可以走到(0,y)或(x,0) C++ Co ...
- 【bzoj2038】[国家集训队2010]小Z的袜子 莫队
莫队:就是一坨软软的有弹性的东西Duang~Duang~Duang~ 为了防止以左端点为第一关键字以右端点为第二关键字使右端点弹来弹去,所以让左端点所在块为关键字得到O(n1.5)的时间效率,至于分块 ...
- hdu 3473 (划分树)2
Minimum Sum Time Limit: 16000/8000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...