问题 D:城市大脑

题目描述

杜老师正在编写杭州城市大脑智能引擎。杭州的道路可以被抽象成为一幅无向图。每条路的初始速度都是 \(1\ m/s\)。杜老师可以使用 \(1\) 块钱让任意一条路的速度提升 \(1\ m/s\)。如果一条路的速度为 \(a\ m/s\),那么我们需要 \(1/a\) \(s\)才能通过这条道路。初始杜老师有 k 块钱,杜老师要把这 k 块钱花在升级这些道路上。 现在有两位选手,一位要从 \(s_1\) 走到 \(t_1\),一位要从 \(s_2\) 走到 \(t_2\),请问杜老师要怎么花钱,使得两位选手花费的总时间最少?当杜老师花完钱之后,两位选手都会走花费时间最少的路。杜老师花在每条道路上的钱都必须是非负整数。

输入格式

第一行三个整数 \(n,m,k\) 分别表示点数、边数以及杜老师初始有多少钱。

接下来 \(m\) 行,每行两个正整数 a,b 表示边(可以有重边)。

接下来一行四个整数 \(s_1,t_1,s_2,t_2\)。数据保证 \(s_1,t_1\)、\(s_2,t_2\) 连通。

输出格式

一行一个数表示答案。相对误差或绝对误差在 \(10^{-9}\) 内即为正确。

样例输入#1

点击查看
6 5 1
1 2
3 2
2 4
4 5
4 6
1 5 3 6

样例输出#1

点击查看
5.000000000000

样例输入#2

点击查看
1 0 100
1 1 1 1

样例输出#2

点击查看
0.000000000000

样例输入#3

点击查看
4 2 3
1 2
3 4
1 2 3 4

样例输出#3

点击查看
0.833333333333

提示

对于 \(20\%\) 的数据,\(n,m \leq 10,k\leq 10\);

对于 \(50\%\) 的数据,\(n,m \leq 10^3,k\leq 10^9\)。

对于 \(100\%\) 的数据,\(n,m \leq 5 \cdot 10^3,k\leq 10^9\)。

题解

点击查看代码
#include<cstdio>
#include<vector>
#include<cstring>
#define forl(i,n) for(int i=1;i<=n;i++)
#define forr(i,n) for(int i=n;i>0;--i)
using namespace std;
inline void cmin(int &x,int y){if(x>y)x=y;return;}
inline int min(int x,int y){return x<y?x:y;}
const int N = 5009;
vector<int>v[N];
int n,m,k,a,b,s1,t1,s2,t2,h,t;
int que[N],value[N];
int dist[N][N];
void bfs(int id)
{
h=t=0;
que[++t]=id;
while(h<t)
{
++h;
int x=que[h],to;
forr(i,v[x].size()-1)
{
to=v[x][i];
if(dist[id][to]||to==id)continue;
dist[id][to]=dist[id][x]+1;
que[++t]=to;
}
}
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
forl(i,m)
{
scanf("%d%d",&a,&b);
v[a].push_back(b);
v[b].push_back(a);
}
forl(i,n)bfs(i);
scanf("%d%d%d%d",&s1,&t1,&s2,&t2);
value[0]=dist[s1][t1]+dist[s2][t2];
forl(i,n)
{
forl(j,n)
{
if(i==j||!dist[i][j]||!dist[i][s1]||!dist[i][s2]||!dist[j][t1]||!dist[j][t2])continue;
cmin(value[dist[i][j]],dist[i][s1]+dist[i][s2]+dist[j][t1]+dist[j][t2]);
}
}
for(int i=0;i<=m;i++){ }
return 0;
}

Round #2022/12/10的更多相关文章

  1. ubuntu 12.10 sourcelist软件更新源列表(zz)

        ubuntu 12.10正式版已经发布了,国内各大开源软件源也陆续更新了资源.今天分享一下ubuntu 12.10 软件更新源列表. 首先,备份一下ubuntu 12.04 原来的源地址列表文 ...

  2. 大型网站演化(转载 http://homeway.me/2014/12/10/think-about-distributed-clusters/)

    0x01.大型网站演化 简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率. 集群主要分为:高可用集群(High Availability Clu ...

  3. Ubuntu 12.10 安装 jdk-7u10-linux-x64.tar.gz(转载)

    在Ubuntu 12.10下安装 jdk-7u10-linux-x64.tar.gz 总的原则:将jdk-7u10-linux-x64.tar.gz压缩包解压至/usr/lib/jdk,设置jdk环境 ...

  4. 解决Ubuntu 12.10中ZIP文件名乱码的方法

    转摘源地址:http://blog.csdn.net/jiangxinyu/article/details/8206395 安装(12.04及以上): 代码: sudo apt-get install ...

  5. ubuntu 12.10无法用apt-get安装软件 Err http://us.archive.ubuntu.com quantal-updates/main Sources 404 Not

     之前执行apt-get 不管是什么软件或apt-get update都会遇到fail to fetch http://us.archive.ubuntu.com quantal-updates/ma ...

  6. ubuntu 12.10 软件更新源列表

    ubuntu 12.10正式版已经发布了,国内各大开源软件源也陆续更新了资源.今天分享一下ubuntu 12.10 软件更新源列表. 首先,习惯性的备份一下ubuntu 12.04 原来的源地址列表文 ...

  7. Ubuntu 13.04/12.10安装Oracle 11gR2图文教程(转)

    Ubuntu 13.04/12.10安装Oracle 11gR2图文教程 原文标题:How to Install Oracle 11G R2 Enterprise Edition Database U ...

  8. install the Mondo Rescue utility in Ubuntu 12.04 or 12.10.

      1. Open a terminal window. 2. Type in the following commands, then hit Enter after each.   wget ft ...

  9. Ubuntu 12.10 安装VirtualBox增强功能

    原文链接:http://fengbaoxp.iteye.com/blog/1871825 Ubuntu 12.10 Desktop         首先,通过VirtualBox菜单(设备->安 ...

  10. Ubuntu 12.10安装QQ2012

    [日期:2012-11-05] 在最新的Ubuntu 12.10下安装QQ2012,请根据自己的机器类型下载后按照下面的32位或64位安装说明安装. 下载网址:http://www.longene.o ...

随机推荐

  1. Mac下安装Redis,附可视化工具Medis

    导读 我之前写过很多相关的redis的博文,有时候,为了开发,还得去虚拟机上搭建一个redis,感觉太麻烦了,为了做个demo,直接在自己mac本上安装一个即可. Redis 从入门到精通:点我直达 ...

  2. Spring MVC 中视图的实现原理,在Spring MVC 中实现重定向和转发,以及访问静态资源

    1. Spring MVC 中视图的实现原理,在Spring MVC 中实现重定向和转发,以及访问静态资源 @ 目录 1. Spring MVC 中视图的实现原理,在Spring MVC 中实现重定向 ...

  3. 3.5 Y84-64的流水线实现

    我们终于准备好要开始本章的主要任务--设计一个流水线化的Y86-64处理器.首先,对顺序的SEQ处理器做一点小的改动,将PC的计算挪到取指阶段.然后,在各个阶段之间加上流水线寄存器.到这个时候,我们的 ...

  4. [oeasy]python0115_西里尔字符集_Cyrillic_俄文字符编码_KOI_8859系列

    各语言字符编码 回忆上次内容 上次回顾了 非ascii的拉丁字符编码的进化过程 0-127 是 ascii 的领域   西欧.北欧语言 大多使用 拉丁字符 由iso组织 制定iso-8859-1   ...

  5. 第九节 JMeter基础-高级登录【接口关联-鉴权】

    声明:本文所记录的仅本次操作学习到的知识点,其中商城IP错误,请自行更改. 背景:电商的功能:登录.加入购物车.提交订单.问题:谁把什么商品加入了购物车?这时需要把上一个接口的响应数据(登录成功后返回 ...

  6. SQL 注入漏洞详解 - Union 注入

    1)漏洞简介 SQL 注入简介 SQL 注入 即是指 Web 应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在 Web 应用程序中事先定义好的查询语句的结尾上添加额外的 SQL 语句,在 ...

  7. java中的Context

    在java编程中,上下文(Context)是指程序运行时的环境和状态的集合.包括了类对象变量方法等运行时的相关数据 在类中,我们可以通过this获取当前类的变量.方法的上下文, 例如getset方法: ...

  8. RHCA cl210 013 制作镜像 轮转key rabbitmq追踪 写时复制 keystone多域登录图形界面

    undercloud 部署 overcloud overcloud控制节点上的组建rabbitmq 排错需要rabbitmq,开启追踪则会更详细,会消耗性能 环境问题 登录一下classroom os ...

  9. ambari+ bigtop 编译、打包、部署步骤总览

    1 ambari + bigtop 构建大数据基础平台 1.1 参考: 1.2 参考 amabri bigtop 打包部署 2 ambari+bigtop编译.打包.部署 2.0 基础环境准备 2.1 ...

  10. 【Vue2】Vue-Cli使用

    1.需要NodeJS环境支持,此处省略NodeJS安装 2.使用NPM命令安装CLI包 vue-cli是npm.上的一个全局包,使用npm install 命令,即可方便的把它安装到自己的电脑上: n ...