题面

这道题可以理解为是一个分层图,也可以理解为是二维的SPFA

dis[i][j]表示到达i这个点速度为j的最短路

然后跑已经死了的SPFA就好了;

#include <bits/stdc++.h>
#define inc(i,a,b) for(register int i=a;i<=b;i++)
using namespace std;
int head[200010],cnt;
int inf=2e9+1;
class littlestar{
public:
int to;
int nxt;
int w;
int speed;
void add(int u,int v,int gg,int hh)
{
to=v;
nxt=head[u];
w=gg;
speed=hh;
head[u]=cnt;
}
}star[200010];
int n,m,T;
class node1{
public:
int u,speed;
};
double dis[301][501];
int vis[301][501];
node1 pre[301][501];
void SPFA()
{
queue<node1> qwq;
qwq.push((node1){0,70});
inc(i,0,n) inc(j,0,500) dis[i][j]=inf,pre[i][j].u=-1,pre[i][j].speed=-1;
dis[0][70]=0;
while(qwq.size()){
node1 tmp=qwq.front();
qwq.pop();
vis[tmp.u][tmp.speed]=0;
for(int i=head[tmp.u];i;i=star[i].nxt){
int v=star[i].to;
int now=star[i].speed;
if(!now) now=tmp.speed;
if(dis[tmp.u][tmp.speed]+(double)star[i].w/now<dis[v][now]){
dis[v][now]=dis[tmp.u][tmp.speed]+(double)star[i].w/now;
pre[v][now].u=tmp.u;
pre[v][now].speed=tmp.speed;
if(!vis[v][now]){
vis[v][now]=1;
qwq.push((node1){v,now});
}
}
}
}
}
int ans[3000];
int main()
{ cin>>n>>m>>T;
inc(i,1,m){
int a,b,c,d;
scanf("%d%d%d%d",&a,&b,&c,&d);
star[++cnt].add(a,b,d,c);
}
SPFA();
double minn=999999999.9,id=0;
inc(i,0,500){
if(minn>dis[T][i]){
minn=dis[T][i];id=i;
}
}
int now=T,now2=id,cnt=0;
while(now!=-1){
ans[++cnt]=now;
int tmp=now2;
now2=pre[now][now2].speed;
now=pre[now][tmp].u;
}
for(int i=cnt;i>=1;i--){
cout<<ans[i]<<" ";
}
}
/*
6 15 1 0 1 25 68 0 2 30 50 0 5 0 101 1 2 70 77 1 3 35 42 2 0 0 22 2 1 40 86 2 3 0 23 2 4 45 40 3 1 64 14 3 5 0 23 4 1 95 8 5 1 0 84 5 2 90 64 5 3 36 40
*/

最新文章

  1. 整合struts2+hibernate详细配置步骤及注意事项
  2. ActiveReports 11 新特性速递
  3. [转载] python 计算字符串长度
  4. Ubuntu 12.04 系统安装极点五笔输入法
  5. 清爽绿色格调图文box通用样式
  6. Delphi XE8,C++ Builder XE8,RAD Studio XE8 官方 ISO 文件下载,附激活工具
  7. Hibernate+maven+mysql
  8. virtualbox端口转发
  9. css案例学习之ul li dl dt dd实现二级菜单
  10. 串口调试工具(Python2.7+pyserial+Tkinter)
  11. 多版本jQuery的使用剖析
  12. Swift - 运算符重载和运算符函数
  13. jQuery ajax中使用serialize()方法提交表单数据示例
  14. Ext 行统计有意思的实现.(js对象的循环, ext列的设置)
  15. Django model select的各种用法详解
  16. TCP和UDP基本原理
  17. Redis特性--多数据库与事务性
  18. 自己开发chrome插件生成二维码
  19. coursera国际法笔记 持续更新
  20. android webview goback 跳过页面302自动跳转方法

热门文章

  1. 在linux操作系统上进行简单的C语言源码的gcc编译实验
  2. elasticsearch+logstash+kibana部署
  3. CSS子元素在父元素中水平垂直居中的几种方法
  4. oracle 中INSTR 函数和SUBSTR函数的使用
  5. caps lock 映射成 esc,右Ctrl映射右移
  6. Hibernate3核心API使用
  7. pipreqs------查找python项目依赖并生成requirement
  8. 使用IntelliJ IDEA和Maven管理搭建+Web+Tomcat开发环境
  9. 手把手教你如何玩转Solr(包含项目实战)
  10. JavaScript(7)——DOM