题目大意:最短路,第$i$个点原有积雪$h_i$,极限雪高$l_i$(即雪超过极限雪高就不可以行走),每秒降雪$q$,ことり速度为$1m/s$,若时间大于$g$,则输出$wtnap wa kotori no oyatsu desu!$

题解:变形的最短路

卡点:1.终点不受极限雪高限制

C++ Code:

#include <cstdio>
#include <cstring>
using namespace std;
int n, m, S, T;
int q[1000010], h, t;
long long H[100010], l[100010], g, Q;
long long d[100010];
int head[100010], cnt;
bool vis[100010];
struct Edge {
int to, nxt;
long long w;
}e[1000010 << 1];
void add(int a, int b, long long c) {
e[++cnt] = (Edge) {b, head[a], c}; head[a] = cnt;
}
void SPFA(int st) {
memset(d, 0x3f, sizeof d);
d[q[h = t = 0] = st] = 0;
while (h <= t) {
int u = q[h++];
vis[u] = false;
for (int i = head[u]; i; i = e[i].nxt) {
int v = e[i].to; long long w = d[u] + e[i].w;
if ((w * Q + H[v] > l[v]) && (v != T)) continue;
if (d[v] > w) {
d[v] = w;
if (!vis[v]) {
vis[v] = true;
q[++t] = v;
}
}
}
}
// printf("%lld\n", d[T]);
if (d[T] > g) puts("wtnap wa kotori no oyatsu desu!");
else printf("%lld\n", d[T]);
return ;
puts("ことりのおやつにしてやるぞー!");
}
int main() {
scanf("%d%d%d%d%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 = 0; i < m; i++) {
int a, b; long long c;
scanf("%d%d%lld", &a, &b, &c);
add(a, b, c);
add(b, a, c);
}
SPFA(S);
return 0;
}

  

最新文章

  1. 【转】Android开发中让你省时省力的方法、类、接口
  2. SQL温故系列两篇(一)
  3. android中两种方式打开网页
  4. SPSS时间序列:频谱分析
  5. 使用rsync+inotify+apache做分布式图片服务器的部署方法
  6. mysql 全文查找fulltext
  7. Windows 之间用rsync同步数据(cwRsyncServer配置)
  8. 剑指OFFER之第一个只出现一次的字符(九度OJ1283)
  9. Android简单开发的画画板
  10. [C++学习历程]基础部分 C++中的函数学习
  11. SVM支持向量机 详解(含公式推导)
  12. g2opy 记录
  13. Linq to SQL -- Union All、Union、Intersect和Top、Bottom和Paging和SqlMethods
  14. 006_ansible1.9.6版本的安装
  15. Nginx负载均衡session会话保持方法
  16. testNG-失败用例重跑方法探究
  17. 前端mock数据的几种方式
  18. 解决 iframe 后退不是主页面后退(浏览器 history)问题
  19. c++ std::function
  20. Python实现 -- 冒泡排序、选择排序、插入排序

热门文章

  1. video.js使用技巧
  2. 如何用Python做自动化特征工程
  3. 第三章 最简单的C程序设计——顺序程序设计
  4. [BZOJ2809][Apio2012]dispatching(左偏树)
  5. Android面试收集录 蓝牙与WiFi
  6. java反射操作类方法与属性
  7. python基础&mdash;&mdash;列表、字典
  8. 使用Visual Studio 2017构建.Net Core的Docker镜像
  9. 27、理解js的继承机制(转载自阮一峰)
  10. 失败的尝试,使用继承扩展数组,以及ES6的必要性