A*+迪杰特斯拉。。。

第十一个点卡爆

不管了

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<iomanip>
#include<queue>
#define maxn 5010
#define inf 0x3f3f3f
using namespace std;
int n,m,answer,cur[maxn];
double te,d[maxn];
struct edge{///邻接表
int to;
double val;
bool operator<(const edge&other)const{///改变优先级
return val>other.val;
}
};
vector<edge>g[maxn],gi[maxn];///g正向边gi反向边
void add_edge(int u,int v,double w)
{
g[u].push_back((edge){v,w});///正向存边
gi[v].push_back((edge){u,w});///反向存边
}
void dijkstra(int s){///非常正常的迪杰特斯拉
for(int i=1;i<=n+1;i++){
d[i]=inf;
}
d[s]=0;
priority_queue<edge>q;///优先队列
q.push((edge){s,0});///压栈
while(!q.empty()){
edge e=q.top();///取顶
q.pop();
int num=gi[e.to].size();
for(int i=0;i<num;i++){
if(d[gi[e.to][i].to]>d[e.to]+gi[e.to][i].val){
d[gi[e.to][i].to]=d[e.to]+gi[e.to][i].val;///松弛操作
q.push((edge){gi[e.to][i].to,d[gi[e.to][i].to]});///路径入栈
}
}
}
}
void astar(int s){
double maxd=te/d[s];
priority_queue<edge>q;
q.push((edge){s,d[s]});
while(!q.empty()){///弹栈
edge e=q.top();///取顶
q.pop();///删顶
if(e.val>te){///是否退出
return;
}
if(++cur[e.to]>maxd){///到该点次数++
continue;
}
if(e.to==n){///到终点累加路径长度
te-=e.val;
answer++;
continue;
}
if(cur[e.to]>maxd){
continue;
}
int num=g[e.to].size();
for(int i=0;i<num;i++){
q.push((edge){g[e.to][i].to,e.val-d[e.to]+g[e.to][i].val+d[g[e.to][i].to]});///保留路径入栈
}
}
}
int main(){
///freopen("read.txt","r",stdin);
scanf("%d%d%lf",&n,&m,&te);
while(m--){
int s,t;
double e;
scanf("%d%d%lf",&s,&t,&e);
add_edge(s,t,e);
}
dijkstra(n);
astar(1);
printf("%d\n",answer);
return 0;
}

洛谷 K短路(魔法猪学院)的更多相关文章

  1. 洛谷 P2483 [SDOI2010]魔法猪学院

    题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的:元素与 ...

  2. 洛谷——P2483 [SDOI2010]魔法猪学院

    https://www.luogu.org/problem/show?pid=2483 题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的 ...

  3. k短路模板(洛谷P2483 [SDOI2010]魔法猪学院)(k短路,最短路,左偏树,priority_queue)

    你谷数据够强了,以前的A*应该差不多死掉了. 所以,小伙伴们快来一起把YL顶上去把!戳这里! 俞鼎力的课件 需要掌握的内容: Dijkstra构建最短路径树. 可持久化堆(使用左偏树,因其有二叉树结构 ...

  4. K短路 (A*算法) [Usaco2008 Mar]牛跑步&[Sdoi2010]魔法猪学院

    A*属于搜索的一种,启发式搜索,即:每次搜索时加一个估价函数 这个算法可以用来解决K短路问题,常用的估价函数是:已经走过的距离+期望上最短的距离 通常和Dijkstra一起解决K短路 BZOJ1598 ...

  5. BZOJ-1975 魔法猪学院 K短路 (A*+SPFA)

    1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1323 Solved: 433 [Submit][Statu ...

  6. Bzoj 1975: [Sdoi2010]魔法猪学院 dijkstra,堆,A*,K短路

    1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1357  Solved: 446[Submit][Statu ...

  7. [BZOJ1975][SDOI2010]魔法猪学院(k短路,A*)

    1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2748  Solved: 883[Submit][Statu ...

  8. bzoj1975: [Sdoi2010]魔法猪学院【k短路&A*算法】

    1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2446  Solved: 770[Submit][Statu ...

  9. bzoj 1975: [Sdoi2010]魔法猪学院 [k短路]

    1975: [Sdoi2010]魔法猪学院 裸题... 被double坑死了 #include <iostream> #include <cstdio> #include &l ...

随机推荐

  1. [TopCoder]棍子

    题目描述 你有一堆棍子.每个木棒的长度是一个正整数. 你想要一组棍子所有的棍子都有相同的长度.您可以通过执行零个或多个步骤来更改当前集合.每个步骤必须如下所示: 你选择一根棍子.所选棒的长度必须至少为 ...

  2. (50)Wangdao.com第七天_JavaScript 发展与简介

    一个完整的JavaScript 应该由以下三部分组成: ECMAScript DOM,全称Browser Object Model,即浏览器对象模型,主要处理浏览器窗口和框架 BOM,全称Docume ...

  3. laravel5.5 任务调度 (转载)

    Ubuntu和Mac环境中,我们可以使用crontab来控制计划任务 1. 定义调度 我们需要在 App\Console\Kernel 类的 schedule 方法中定义所有任务调度.例如: 上图中定 ...

  4. TP5在前端时间戳转换为时间格式

     value="{:date('Y-m-d H:i:s',$data['add_date'])}"  例如: <td>{:date('Y-m-d H:i:s',$d[' ...

  5. 如何彻底卸载Jenkins

    起因: 最近在做持续集成测试过程中遇到一个问题,之前部署的Jenkins管理员密码忘了之后无法登陆,而且删除掉tomcat下webapps文件夹中的Jenkins目录后,再次安装Jenkins后相关的 ...

  6. ALM 中查看某个 test 的更改 history 历史

    ALM 中要查看某个 test 更改历史, 需要下面两个表: AUDIT_LOG and AUDIT_PROPERTIES ------- Get Test modification history ...

  7. pip3更新后install package出现ImportError: cannot import name 'main'

    linux下pip3更新后,install包出现main不能导入的情况: bear@bear:~/eclipse-workspace/Python-toolbox$ pip3 install pycr ...

  8. 来自一个电子狂的stm32学习历程

    文章尾部有学习时的一些视频资料在学的可以看看那么我们就进入今天的主题我stm32的学习历程 在学习了51单片机之后,早已经对单片机这个东西甚有了解了,所有不管是从内部资源,还是一些常见应用,都可以说的 ...

  9. jQuery实现图片懒加载

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. python操作mysql数据-执行语句返回值直接返回字典类型

    fetchall()将结果放在二维数组里面,每一行的结果在元组里面 import pymysql def export(table_name): conn =pymysql.connect(host ...