问题 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 svn管理工具

    App Store中搜索snailsvn 分付费(98元)和免费试用

  2. AI驱动音乐创新,网易数帆X云音乐刷新MIREX世界纪录 网易数帆 网易数帆

    在近期揭榜的2021国际音频检索评测大赛(MIREX)上,网易数帆易智语音团队携手网易云音乐音视频实验室,凭借生产级AI技术创新能力,在歌词识别和歌单识别两个赛道大幅打破世界纪录夺得冠军. MIREX ...

  3. TypeScript 学习笔记 — 接口的使用(六)

    目录 一.函数接口参数 二.函数类型接口 三.函数混合类型 四.对象接口(最常用) 确定属性 可选属性 任意属性 只读属性 可索引接口 索引访问符 类接口 接口继承 构造函数类型 type 和 int ...

  4. 调试 Node.js

    调试 Node.js 调试器 调试器是一种软件工具,用于通过分析方法观察和控制程序的执行流 设计目标:帮助找出 bug 的根本原因,并帮助你解决它 工作方式:将程序托管在自己的执行进程中或者作为附加到 ...

  5. JMeter 基于脚本实现代码共享

    需求描述 需求是这样的:执行某次压测任务时,压测涉及的前端接口,要求携带一个userName请求头,该请求头值为实际用户名经过DES加密后,再采用Base64加密后的值,为此,编写了一段加密代码,发送 ...

  6. OpenGL book note

    OpenGL Shading language 4.0vertex shader geometry shader: 格式解释 https://blog.csdn.net/hankern/article ...

  7. Python | 解决方案 | 多个文件共用logger,重复打印问题

    项目中封装了logging库为log.py,实现既把日志输出到控制台, 又写入日志文件文件. 环境:python3.7.3 项目中,多个文件共用logger,出现重复打印问题,解决流程记录如下: 文件 ...

  8. 【数学建模导论】Task01 数据处理与拟合模型

    0 前言 感谢 DataWhale 的开源学习课程 intro-mathmodel,项目仓库在这. 现在开始,跟着Task01 进入数据类的学习,实现每一个代码,包括数据预处理.回归分析与分类分析.假 ...

  9. 手把手教你集成GraphRag.Net:打造智能图谱搜索系统

    在人工智能和大数据发展的背景下,我们常常需要在项目中实现知识图谱的应用,以便快速.准确地检索和使用信息. 今天,我将向大家详细介绍如何在一个新的.NET项目中集成GraphRag.Net,这是一个参考 ...

  10. 安卓开发(java.lang.NullPointerException: Attempt to invoke virtual method ‘void android.view.View...)空指针异常

    无论是初学者还是做开发很久的人都会遇到这个问题,那就是空指针异常: 遇到这种情况我们首先不要惊慌,一般这个问题都不是很大的问题,只需要我们 静下心来慢慢的查找,下面分成几步来带你查找问题: 1:首先是 ...