显然每次贪心的走最少消耗的路径即可。那么也就是找出最短路,次短路,,,K短路之后消耗E的能量的最多的路径条数。

也就是裸的A*算法。

#include <bits/stdc++.h>
using namespace std;
typedef double lf;
const int N=, M=;
lf d[N], En;
typedef pair<lf, int> pr;
#define mkpr(x, y) make_pair<lf, int> (x, y)
priority_queue<pr, vector<pr>, greater<pr> >q;
struct Gr {
struct E {
int next, to;
lf w;
}e[M];
int n, ihead[N], cnt;
void add(int x, int y, lf w) {
e[++cnt]=(E){ihead[x], y, w}; ihead[x]=cnt;
}
void dij() {
static bool vis[N];
memset(vis, , sizeof(bool)*(n+));
for(int i=; i<=n; ++i) {
d[i]=1e150;
}
d[n]=;
q.push(mkpr((lf), n));
while(q.size()) {
int x=q.top().second;
q.pop();
if(vis[x]) {
continue;
}
vis[x]=;
for(int i=ihead[x]; i; i=e[i].next) {
int y=e[i].to;
if(d[y]>d[x]+e[i].w) {
d[y]=d[x]+e[i].w;
q.push(mkpr(d[y], y));
}
}
}
}
int getans() {
int ans=;
q.push(mkpr(d[], ));
while(En> && q.size()) {
int x=q.top().second;
lf g=q.top().first-d[x];
q.pop();
if(x==n) {
if(En>=g) {
En-=g;
++ans;
continue;
}
else {
break;
}
}
for(int i=ihead[x]; i; i=e[i].next) {
int y=e[i].to;
lf w=e[i].w;
// 有精度误差啊,不能乱减枝啊
q.push(mkpr(g+w+d[y], y));
}
}
return ans;
}
}g, G;
int main() {
int n, m;
scanf("%d%d%lf", &n, &m, &En);
g.n=G.n=n;
for(int i=; i<=m; ++i) {
int x, y;
lf e;
scanf("%d%d%lf", &x, &y, &e);
g.add(x, y, e);
G.add(y, x, e);
}
G.dij();
printf("%d\n", g.getans());
return ;
}

最新文章

  1. Theano3.5-练习之深度卷积网络
  2. A.Kaw矩阵代数初步学习笔记 9. Adequacy of Solutions
  3. cocos2d Slider 透明滑动部件无法生成解决办法
  4. Gradle的属性设置大全
  5. Crystal Reports &quot;Access to report file denied. Another program may be using it.&quot;
  6. 实用手册:130+ 提高开发效率的 vim 常用命令
  7. 安卓开发-See the log file\.metadata\.log.
  8. 在listener或者工具中使用spring容器中的bean实例
  9. python中string模块各属性以及函数的用法
  10. 封装fastjson为spring mvc的json view
  11. log4j输出到指定日志文件
  12. JavaScript String(字符串对象)
  13. BZOJ 4503: 两个串 [FFT]
  14. 关于ES5的indexof()和ES7的includes()的区别
  15. nacos作为配置中心
  16. angular 设置年份选择下拉框,并默认今年
  17. MapReduce ----倒排索引
  18. Linux:回收循环创建的多个线程
  19. (转)Maven学习总结(八)——使用Maven构建多模块项目
  20. poj 2240 Arbitrage 题解

热门文章

  1. 第五周 mybash的实现
  2. 记一次SpringBoot使用WebUploader的坑
  3. [WC2010][BZOJ1758]重建计划-[二分+分数规划+点分治]
  4. c++静态变量
  5. cookie和session在Django中的应用
  6. ubuntu的学习教程(常用操作)
  7. mybatis按datetime条件查询,参数为时间戳时
  8. 袋鼠云研发手记 | 开源&#183;数栈-扩展FlinkSQL实现流与维表的join
  9. #Ubuntu 18.04 安装tensorflow-gpu 1.9
  10. Beta冲刺第二周王者荣耀交流协会第四次会议