题目链接: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 ことりのおやつ】 题解相关推荐

  1. Luogu P2524题解

    题目描述: 这个题目和P2525很相似,但是问法不同,这个题问的是给你一个既定序列,问这个序列是所有排列中的第几小的. 题解: 这个题目有两种思路,其中一个是STL的prev_permutation( ...

  2. Luogu P1497题解

    题目描述: 有一个n * n的方形区域,同时你有k个木牛流马,同时这k个木牛流马有h种颜色,现在规定两个木牛流马不能同时存在于一行或者一列里面,现在问有几种放置方法? 题解 组合数学问题,这个题目整体 ...

  3. luogu 3426题解 (KMP)

    题面 Byteasar 想在墙上涂一段很长的字符,他为了做这件事从字符的前面一段中截取了一段作为模版. 然后将模版重复喷涂到相应的位置后就得到了他想要的字符序列.一个字符可以被喷涂很多次,但是一个位置 ...

  4. Luogu P2708 硬币翻转 题解

    Luogu p2708题解 思路: 由于我们这个题目的长度不知道,所以我们不能一次性输入所有的硬币的状态,也许会爆数组(Ps:我没试过我不是知道).所以我们为了保险采取用getchar()一个一个读入 ...

  5. luogu P3786 萃香抱西瓜

    P3786 萃香抱西瓜 题目背景 伊吹萃香(Ibuki Suika)正在魔法之森漫步,突然,许多西瓜(Suika)从四周飞来,划出了绚丽的轨迹.虽然阵势有点恐怖,但她还是决定抱走一些西瓜. 题目描述 ...

  6. 题解 [LuoguP3426][POI2005]SZA-Template

    Luogu Link 题解 P3426(kmp) 首先求出 next\text{next}next 数组(记为 nxtinxt_inxti​). 设 fif_ifi​ 表示印制 [1,i][1,i][ ...

  7. 【线段树】[LUOGU 守墓人] [LUOGU 维护序列] 线段树模板题

    题目: 题目链接:[LUOGU 守墓人] 题解: 线段树单点修改,区间修改,单点查询,区间查询,一系列线段树基本操作,模板打就好. (回头再补一个分块和树状数组的这种板子题,就是用分块和树状数组再写一 ...

  8. 2017年10月23日23:58:04

    占坑-- 深夜填坑ing--今天荒废了一节升旗的时间(毕竟laj是那么爱国辣:-> 早上撸了两题,一个树形dp,存双边的时候最好tot从2开始,因为这样可以通过i^1找到这条边的反向边,还有一个 ...

  9. CF613D Kingdom and its Cities

    题目描述: luogu cf 题解: 虚树上dp. 建虚树没啥说的. 那么dp状态? 考虑dfs时返回一个值,代表这个子树上面需不需要隔断. 如果当前点可以占,那么有至少两个这种子树时应该选这个点并返 ...

最新文章

  1. 三维人脸识别研究进展综述(附pdf)
  2. Android Support 包里到底有什么
  3. 以人为本的机器学习:谷歌人工智能产品设计概述 By 机器之心2017年7月17日 12:13 取代了手动编程,机器学习(ML)是一种帮助计算机发现数据中的模式和关系的科学。对于创建个人的和动态的经历
  4. hexo在git上搭建个人博客
  5. oracle约束应用实例,oracle 约束的novalidate 应用
  6. 获取2个地址之间的距离(高德API)
  7. 天空的颜色和大气散射
  8. JAVA 中JDK下载安装
  9. 如何在CentOS 7上安装Percona XtraDB集群
  10. docker mysql 阿里云_阿里云docker部署mysql
  11. 100道练习题,玩转Numpy模块!(上)
  12. SpringSecurity入门到入土教程_2 Oauth教程
  13. rust游戏亮度怎么调亮点_之前用Rust写的扫雷小游戏
  14. UVa 1399 Puzzle
  15. [转贴]VB函数的列表
  16. java web后台开发跟手机APP后台开发有什么不同
  17. 平行四边形不等式优化详解
  18. 转帖:读书前提是先有个知识谱系
  19. python制作口算大师
  20. 数据结构与算法入门教程(C语言实现版)

热门文章

  1. Magnifier.js - 支持鼠标滚轮缩放的图片放大镜效果
  2. 百万级电商秒杀架构设计
  3. 计算机技术在物理教学中的应用,信息技术在物理教学中的运用案例与感悟
  4. 专科毕业生该何去何从?
  5. 成长的旅途,未知的邂逅
  6. 指针变量的星号是靠近变量名还是靠近类型
  7. net start mysql 发生系统错误2 系统找不到指定的文件。
  8. 【视频笔记】华中农业大学-分子生物学:P7-基因的结构 1
  9. 基因分子生物学~DNA双螺旋
  10. 机器学习笔记十九:正则化思想