BZOJ3245: 最快路线 拆点dijkstra

150个点,500种速度,乘起来大概8e4个点,3e4的边

其他题解写的基本都是spfa,想想dij也能做,还挺快

#include<bits/stdc++.h>  
//#pragma comment(linker, "/STACK:1024000000,1024000000")   
#include<stdio.h>  
#include<algorithm>  
#include<queue>  
#include<string.h>  
#include<iostream>  
#include<math.h>                    
#include<set>  
#include<map>  
#include<vector>  
#include<iomanip> 
#include<bitset>
using namespace std;         //#define ll long long  
#define pb push_back  
#define FOR(a) for(int i=1;i<=a;i++) 
#define sqr(a) (a)*(a)
#define dis(a,b) sqrt(sqr(a.x-b.x)+sqr(a.y-b.y))
ll qp(ll a,ll b,ll mod){ll t=1;while(b){if(b&1)t=t*a%mod;b>>=1;a=a*a%mod;}return t;
}
struct DOT{int x;int y;};
const int dx[4]={0,0,-1,1};
const int dy[4]={1,-1,0,0};
const int inf=0x3f3f3f3f;  
const ll mod=1e9+7;
const int maxn=2e2+5;       //---------------maxn---------------///******************************************************/
namespace fastIO{  #define BUF_SIZE 100000  #define OUT_SIZE 100000  #define ll long long  //fread->read  bool IOerror=0;  inline char nc(){  static char buf[BUF_SIZE],*p1=buf+BUF_SIZE,*pend=buf+BUF_SIZE;  if (p1==pend){  p1=buf; pend=buf+fread(buf,1,BUF_SIZE,stdin);  if (pend==p1){IOerror=1;return -1;}  //{printf("IO error!\n");system("pause");for (;;);exit(0);}  }  return *p1++;  
}  
inline bool blank(char ch){return ch==' '||ch=='\n'||ch=='\r'||ch=='\t';}  
inline void read(int &x){  bool sign=0; char ch=nc(); x=0;  for (;blank(ch);ch=nc());  if (IOerror)return;  if (ch=='-')sign=1,ch=nc();  for (;ch>='0'&&ch<='9';ch=nc())x=x*10+ch-'0';  if (sign)x=-x;  
}  
inline void read(ll &x){  bool sign=0; char ch=nc(); x=0;  for (;blank(ch);ch=nc());  if (IOerror)return;  if (ch=='-')sign=1,ch=nc();  for (;ch>='0'&&ch<='9';ch=nc())x=x*10+ch-'0';  if (sign)x=-x;  
}  
inline void read(double &x){  bool sign=0; char ch=nc(); x=0;  for (;blank(ch);ch=nc());  if (IOerror)return;  if (ch=='-')sign=1,ch=nc();  for (;ch>='0'&&ch<='9';ch=nc())x=x*10+ch-'0';  if (ch=='.'){  double tmp=1; ch=nc();  for (;ch>='0'&&ch<='9';ch=nc())tmp/=10.0,x+=tmp*(ch-'0');  }  if (sign)x=-x;  
}  
inline void read(char *s){  char ch=nc();  for (;blank(ch);ch=nc());  if (IOerror)return;  for (;!blank(ch)&&!IOerror;ch=nc())*s++=ch;  *s=0;  
}  
inline void read(char &c){  for (c=nc();blank(c);c=nc());  if (IOerror){c=-1;return;}  
} 
#undef OUT_SIZE  
#undef BUF_SIZE  
}; using namespace fastIO;
/*****************************************************///n 150,v 500,l 500int n,m,D;double d[maxn][550];	//到i点速度为j的最小时间
pair<int,int> from[maxn][550];	//来源int head[maxn],tot;
struct EDGE{int a,b,v,l;int nxt;
}edges[maxn*maxn];
void addedge(int a,int b,int v,int l){edges[++tot]=(EDGE){a,b,v,l,head[a]};head[a]=tot;
}struct sed{int u;int v;double t;friend bool operator <(sed a,sed b){return a.t>b.t;}};
priority_queue<sed>Q;bool vis[maxn][550];
void dij(){memset(d,127,sizeof d);Q.push((sed){0,70,0});d[0][70]=0;while(!Q.empty()){sed now=Q.top();Q.pop();int x=now.u,vx=now.v;double t=now.t;if(vis[x][vx])continue;vis[x][vx]=1;for(int i=head[x];i;i=edges[i].nxt){int y=edges[i].b,vy=edges[i].v,l=edges[i].l;if(vy && d[x][vx]+(double)l/vy < d[y][vy]){d[y][vy]=d[x][vx]+(double)l/vy;from[y][vy]=make_pair(x,vx);Q.push((sed){y,vy,d[y][vy]});}if(!vy && d[x][vx]+(double)l/vx<d[y][vx]){d[y][vx]=d[x][vx]+(double)l/vx;from[y][vx]=make_pair(x,vx);Q.push((sed){y,vx,d[y][vx]});}}}
}void print(int x,int vx){if(x)print(from[x][vx].first,from[x][vx].second);printf("%d",x);if(x!=D)printf(" ");
}int main(){read(n);read(m);read(D);for(int i=1;i<=m;i++){int a,b,v,l;read(a);read(b);read(v);read(l);addedge(a,b,v,l);}dij();int ans=0;for(int i=1;i<=500;i++){if(d[D][i]<d[D][ans])ans=i;}print(D,ans);return 0;
}


转载于:https://www.cnblogs.com/Drenight/p/8611201.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486975.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3dmax体积雾渲染不出来_【扮家家云渲染效果图】3Dmax体积光制作丛林光束|干货教程...

首先打开场景文件场景中创建了一些树木组成了森林的效果。首先要为场景创建灯光。单击创建&#xff0c;选择灯光&#xff0c;将类型切换为标准。接着单击目标平行光。在场景中拖拽进行创建&#xff0c;创建一盏目标平行光&#xff0c;然后单击修改&#xff0c;勾选阴影&#xf…

干货 | 机器人视觉三维成像技术全解析

来源&#xff1a;机器人创新生态在工业4.0时代&#xff0c;国家智能制造高速发展&#xff0c;传统的编程来执行某一动作的机器人已经难以满足现今的自动化需求。在很多应用场景下&#xff0c;需要为工业机器人安装一双眼睛&#xff0c;即机器人视觉成像感知系统&#xff0c;使机…

61二叉搜索树的第k个结点

题目描述 给定一颗二叉搜索树&#xff0c;请找出其中的第k大的结点。例如&#xff0c; 5 / \ 3 7 /\ /\ 2 4 6 8 中&#xff0c;按结点数值大小顺序第三个结点的值为4。思路&#xff1a;二叉搜索树的中序遍历是递增的序列&#xff0c;使用循环的中序遍历找到第k个节点就行了&am…

python海龟绘图_Python教学案例|海龟绘图三例

说明&#xff1a;海龟绘图网上的案例非常多&#xff0c;网上百度一搜就可以找到各种各样的不同绘图参考代码&#xff0c;简单的有&#xff0c;难的有绘制梵高画、九大行星图等等&#xff0c;有需求的最好问度娘&#xff0c;简单又方便。分享Python 基础教程:https://www.runoob…

后香农时代,华为提出10大数学挑战问题

来源&#xff1a;机器之心编辑&#xff1a;杜伟后香农时代的通信技术会如何发展&#xff1f;又有哪些值得业界关注的数学问题呢&#xff1f;在上月底结束的长沙「数学促进企业创新发展论坛」上&#xff0c;华为董事、战略研究院院长徐文伟抛出了后香农时代信息产业发展面临的了…

Oracle中如何查询一个表的所有字段名和数据类型

Oracle中如何查询一个表的所有字段名和数据类型 查询语法 select A.COLUMN_NAME,A.DATA_TYPE from user_tab_columns A where TABLE_NAME表名 查询例子 select A.COLUMN_NAME,A.DATA_TYPE from user_tab_columns A where TABLE_NAMEPUB_GOODS 添加排序后例子 select A.COLUMN…

wdcp mysql远程_CentOS下WDCP下的MYSQL开启远程连接

在 Windows 主机中点击开始菜单&#xff0c;运行&#xff0c;输入“cmd”&#xff0c;进入控制台&#xff0c;然后cd 进入MySQL 的 bin 目录下&#xff0c;然后输入下面的命令。> MySQL -uroot -p123456 (123456 为 root 用户的密码。)如何开启MySQL的远程帐…

美智库:下一代国防战略之竞争战略

来源&#xff1a;远望智库预见未来编译&#xff1a; 张涛&#xff08;远望智库技术预警中心&#xff09;美国新国家安全中心(CNAS)日前发布题为《竞争战略》的文章&#xff0c;作者梅兰妮西森撰文分析认为五角大楼的下一代国防战略需要一种能够说服盟友和胁迫对手的竞争战略。背…

mysql key buffer_mysql 开发进阶篇系列 16 MySQL Server(myisam key_buffer)

一.概述mysql 提供了很多参数来进行服务器的设置&#xff0c;当服务第一次启动的时候&#xff0c;所有启动参数值都是系统默认的。这些参数在很多生产环境下并不能满足实际的应用需求。在这个系列中涉及到了linux 服务器&#xff0c;我这里是centos7.4, mysql 5.7,Xshell6。1. …

这里有一张中国的数字化地图,请查收

来源&#xff1a;腾讯研究院今天&#xff0c;在2020腾讯全球数字生态大会上&#xff0c;腾讯研究院联合腾讯云发布了《数字中国指数报告&#xff08;2020&#xff09;》。此次发布的报告显示&#xff1a;2019年数字中国指数继续保持高速增长&#xff0c;其中&#xff0c;以珠三…

mysql中的强制索引_MYSQL中常用的强制性操作(例如强制索引)

mysql常用的hint对于经常使用oracle的朋友可能知道&#xff0c;oracle的hint功能种类很多&#xff0c;对于优化sql语句提供了很多方法。同样&#xff0c;在mysql里&#xff0c;也有类似的hint功能。下面介绍一些常用的。强制索引 FORCE INDEX复制代码代码如下:SELECT * FROM TA…

华为王成录:把安卓最核心部分换得差不多了 手机升级鸿蒙OS 2.0水到渠成

内容来自网易新闻9月10日下午&#xff0c;华为在东莞松山湖举办了2020华为开发者大会&#xff0c;发布了鸿蒙OS 2.0、EMUI 11&#xff0c;并介绍HMS生态目前最新的成果和进展。大会上&#xff0c;华为消费者业务CEO余承东表示&#xff0c;鸿蒙OS 2.0全面使能全场景生态&#xf…

python学习随笔day3

文档读写 #文档内容切片fopen(abc,r,encodingutf-8) #abc是文档名称count 0;for line in f: if count9: print("--------------------------------切割线----------------------------------") count 1 continue print(line.strip()) …

mybatis mysql5.7_spring boot整合ES+mysql5.7+mybatis+iview个人博客系统

项目描述目前博主正在开发自己的博客&#xff0c;分享的目的&#xff0c;是为了给自己留一版基础代码&#xff0c;好用来以后&#xff0c;做二次开发&#xff0c;也方便大家做二次开发。这个代码我还整合了其他的东西&#xff0c;比如qz定时器&#xff0c;shiro&#xff0c;只不…

人工智能写出第一篇文章:我真的没想要消灭你们,人类!

来源&#xff1a;网信科技前沿在攻克棋类&#xff0c;飞行操控&#xff0c;机器视觉&#xff0c;语音识别等领域后&#xff0c;人工智能又开始入侵写作领域。人工智能被人类开发出来是为了方便我们人类的生活&#xff0c;帮助人类处理一些事物&#xff0c;它的优点在于其拥有庞…

Vue项目开发1-项目的创建

一.环境搭建准备&#xff1a; 1.确保项目已经安装了node 2.webpack安装 npm install webpack -g &#xff08;安装过略过&#xff09; 3.安装vue-cli脚手架构建工具&#xff0c;打开命令行工具输入&#xff1a;npm install vue-cli -g &#xff08;安装过略过&#xff09; 二.构…

html间隔代码_HTML+CSS基础入门开发,经典Loading加载缩放动画特效

大家好&#xff0c;本篇文章分享经典Loading加载缩放动画特效&#xff0c;欢迎参考和指正。效果图&#xff1a;Loading加载缩放动画特效HTML代码&#xff1a;CSS代码&#xff1a;知识点&#xff1a;animation&#xff1a;是CSS3的动画属性&#xff0c;这里把animation绑定到tui…

造一个鸿蒙,仅有华为还不够

来源&#xff1a;雷锋网作者&#xff1a;肖漫“全场景”一词&#xff0c;可以说是整个开发者大会上的高频词汇&#xff0c;在介绍鸿蒙系统 2.0 时&#xff0c;余承东强调&#xff0c;鸿蒙 OS 是首个真正为全场景时代打造的分布式操作系统。用王成录会后采访的话说&#xff0c;鸿…

洛谷 P1091 合唱队形

题目描述 N位同学站成一排&#xff0c;音乐老师要请其中的(N-K)位同学出列&#xff0c;使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形&#xff1a;设K位同学从左到右依次编号为1&#xff0c;2…&#xff0c;K&#xff0c;他们的身高分别为T1&#xff0c;T2&…

mysql怎么禁止远程连接_mysql如何设置禁止远程连接

mysql设置禁止远程连接的方法&#xff1a;1、登录数据库服务器&#xff0c;指定mysql数据库&#xff1b;2、执行【update user set hostlocalhost where userroot;】语句&#xff1b;3、刷新权限表。具体步骤&#xff1a;use mysql #打开mysql数据库#将host设置为localhost表示…