问题 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. C#皮肤美化

    关于Winform窗体美化,目前大致了解是有两种方式:第一种方式是重写Winform本身的控件,不过这需要非常熟悉控件的各个属性和事件并且要求具有很高的GDI绘图技术.第二种方式是借助第三方Winfo ...

  2. 记一次centos7.9崩溃恢复操作(limits.conf配置失误),救援模式

    引起故障的原因:调整了操作系统的内核参数文件limits.conf,*  soft nproc 131072 *  hard nproc 131072 *  soft nofile 65536 *   ...

  3. [oeasy]python0137_相加运算_python之禅_import_this_显式转化

    变量类型 相加运算 回忆上次内容 上次讲了是从键盘输入变量 input 函数 可以有提示字符串 需要有具体的变量接收输入的字符串   输入单个变量没有问题 但是输入两个变量之后 一相加就非常离谱   ...

  4. oeasy教您玩转python - 008 - # ascii码表

    ​ ASCII 码表 回忆上次内容 通过 help()可以从 python 命令行模式进入到帮助模式 通过 q 退出 ord(c)和 chr(i) 这是俩函数 这俩是一对,相反相成的 ord 通过字符 ...

  5. 对比python学julia(第一章)--(第二节)似曾相识燕归来

    Julia和python一样,都是跨平台开源语言,而且都是动态语言,所以毫无疑问,需要运行时支撑.很简单,到官网去下载julia(https://julialang.org/downloads/).和 ...

  6. 【Java】Mysql文档生成工具

    资料参考: https://blog.csdn.net/weixin_43797561/article/details/122809269 https://blog.csdn.net/qq_33177 ...

  7. attention机制、LSTM二者之间,是否存在attention一定优于LSTM的关系呢?

    这里没有严格的论证,只是自己的一些理解. attention机制下的Transformer确实是当前AI技术中最为火热的,基于其构建的大语言模型可以说是AI技术至今最强的技术之一了,但是attenti ...

  8. 在进行神经网络训练时需要使用的显存空间大小的预估——300MB的神经网络在训练时最少需要占用多大的显存空间

    以Tensorflow为例. ======================================= 神经网络(TensorFlow举例)在GPU中训练时需要占用的内存大概有下面几部分组成: ...

  9. 如何在python同一应用下的多模块中共享变量

    最近在考虑编码风格的问题,突然想到如何在一个python应用下的多个模块中共享一个变量.最早接触python还是在python2.5版本左右,那个时候由于python的import规则设定的问题导致本 ...

  10. gym库中类FilterObservation(ObservationWrapper)的理解

    filter_observation.py模块中类 FilterObservation(ObservationWrapper) 的理解. 代码: import copy from gym import ...