【luogu P3946 ことりのおやつ】 题解
题目链接:https://www.luogu.org/problemnew/show/P3946
交好几遍是因为虽然能过一直有提醒..强迫症qwq
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn = 5 * 1e6 + 10;
ll n, m, s, t, g, q;
ll dis[maxn], h[maxn], l[maxn];
bool vis[maxn];
struct edge{ll from, to, next, len;
}e[maxn<<2];
ll head[maxn], cnt;
queue<int> Q;
void add(ll u, ll v, ll w)
{e[++cnt].from = u;e[cnt].len = w;e[cnt].next = head[u];e[cnt].to = v;head[u] = cnt;
}
void SPFA()
{while(!Q.empty()){ll now = Q.front(); Q.pop();vis[now] = 0;for(int i = head[now]; i != -1; i = e[i].next){//cout<<e[i].from<<" "<<e[i].to<<endl;if(e[i].to == t && dis[e[i].to] > dis[now] + e[i].len){dis[e[i].to] = dis[now] + e[i].len;if(!vis[e[i].to]){Q.push(e[i].to);vis[e[i].to] = 1;}continue;}if(dis[e[i].to] > dis[now] + e[i].len && (dis[e[i].from] + e[i].len) * q + h[e[i].to] <= l[e[i].to]){dis[e[i].to] = dis[now] + e[i].len;if(!vis[e[i].to]){Q.push(e[i].to);vis[e[i].to] = 1;}}}}
}
int main()
{memset(dis, 127, sizeof(dis));memset(head, -1, sizeof(head));scanf("%lld%lld%lld%lld%lld%lld",&n,&m,&s,&t,&g,&q);for(int i = 1; i <= n; i++)scanf("%lld%lld",&h[i],&l[i]);for(int i = 1; i <= m; i++){ll u, v, w;scanf("%lld%lld%lld",&u,&v,&w);add(u, v, w);add(v, u, w);}dis[s] = 0, vis[s] = 1, Q.push(s);SPFA();if(dis[t] <= g)printf("%lld",dis[t]);elseprintf("wtnap wa kotori no oyatsu desu!\n");return 0;
}
转载于:https://www.cnblogs.com/MisakaAzusa/p/9670132.html
【luogu P3946 ことりのおやつ】 题解相关推荐
- Luogu P2524题解
题目描述: 这个题目和P2525很相似,但是问法不同,这个题问的是给你一个既定序列,问这个序列是所有排列中的第几小的. 题解: 这个题目有两种思路,其中一个是STL的prev_permutation( ...
- Luogu P1497题解
题目描述: 有一个n * n的方形区域,同时你有k个木牛流马,同时这k个木牛流马有h种颜色,现在规定两个木牛流马不能同时存在于一行或者一列里面,现在问有几种放置方法? 题解 组合数学问题,这个题目整体 ...
- luogu 3426题解 (KMP)
题面 Byteasar 想在墙上涂一段很长的字符,他为了做这件事从字符的前面一段中截取了一段作为模版. 然后将模版重复喷涂到相应的位置后就得到了他想要的字符序列.一个字符可以被喷涂很多次,但是一个位置 ...
- Luogu P2708 硬币翻转 题解
Luogu p2708题解 思路: 由于我们这个题目的长度不知道,所以我们不能一次性输入所有的硬币的状态,也许会爆数组(Ps:我没试过我不是知道).所以我们为了保险采取用getchar()一个一个读入 ...
- luogu P3786 萃香抱西瓜
P3786 萃香抱西瓜 题目背景 伊吹萃香(Ibuki Suika)正在魔法之森漫步,突然,许多西瓜(Suika)从四周飞来,划出了绚丽的轨迹.虽然阵势有点恐怖,但她还是决定抱走一些西瓜. 题目描述 ...
- 题解 [LuoguP3426][POI2005]SZA-Template
Luogu Link 题解 P3426(kmp) 首先求出 next\text{next}next 数组(记为 nxtinxt_inxti). 设 fif_ifi 表示印制 [1,i][1,i][ ...
- 【线段树】[LUOGU 守墓人] [LUOGU 维护序列] 线段树模板题
题目: 题目链接:[LUOGU 守墓人] 题解: 线段树单点修改,区间修改,单点查询,区间查询,一系列线段树基本操作,模板打就好. (回头再补一个分块和树状数组的这种板子题,就是用分块和树状数组再写一 ...
- 2017年10月23日23:58:04
占坑-- 深夜填坑ing--今天荒废了一节升旗的时间(毕竟laj是那么爱国辣:-> 早上撸了两题,一个树形dp,存双边的时候最好tot从2开始,因为这样可以通过i^1找到这条边的反向边,还有一个 ...
- CF613D Kingdom and its Cities
题目描述: luogu cf 题解: 虚树上dp. 建虚树没啥说的. 那么dp状态? 考虑dfs时返回一个值,代表这个子树上面需不需要隔断. 如果当前点可以占,那么有至少两个这种子树时应该选这个点并返 ...
最新文章
- 三维人脸识别研究进展综述(附pdf)
- Android Support 包里到底有什么
- 以人为本的机器学习:谷歌人工智能产品设计概述 By 机器之心2017年7月17日 12:13 取代了手动编程,机器学习(ML)是一种帮助计算机发现数据中的模式和关系的科学。对于创建个人的和动态的经历
- hexo在git上搭建个人博客
- oracle约束应用实例,oracle 约束的novalidate 应用
- 获取2个地址之间的距离(高德API)
- 天空的颜色和大气散射
- JAVA 中JDK下载安装
- 如何在CentOS 7上安装Percona XtraDB集群
- docker mysql 阿里云_阿里云docker部署mysql
- 100道练习题,玩转Numpy模块!(上)
- SpringSecurity入门到入土教程_2 Oauth教程
- rust游戏亮度怎么调亮点_之前用Rust写的扫雷小游戏
- UVa 1399 Puzzle
- [转贴]VB函数的列表
- java web后台开发跟手机APP后台开发有什么不同
- 平行四边形不等式优化详解
- 转帖:读书前提是先有个知识谱系
- python制作口算大师
- 数据结构与算法入门教程(C语言实现版)