这是一道交互题,你只需要实现代码中要求的函数。
本题仅支持 C++ 语言提交。
题目描述
匈牙利有
这些城市之间由
两个不同城市
利用这些道路从任意一个城市到任意一个其他的城市都是有可能的。换言之,任意两个不同城市之间都存在路径。
可以证明两个不同城市之间的路径是唯一的。
一条路径
在匈牙利,很多人都会在建国日去参加在两个主要城市举行的庆祝活动。当庆祝活动结束时,他们会回家。政府为了防止人群干扰当地人,所以决定在特定时刻封锁城市。每个城市被政府分配一个非负的封锁时刻。政府决定所有城市的封锁时刻总和不得超过
考虑一个城市
情况 1:
情况 2:这两个城市之间的路径
今年,两个主要的庆祝地点位于城市
对于每一个封锁时刻的分配方案,可以定义一个便利分数,其定义为下面两个数字之和:
- 从城市
注意如果一个城市既能从城市
你的任务是计算能被某个封锁时刻分配方案实现的最大便利分数。
实现细节
你要实现以下函数。
int max_score(int N, int X, int Y, int64 K, int[] U, int[] V, int[] W)
:城市的个数 , :两个主要庆祝城市 :封锁时刻总和的上界 , : 长度为 的描述道路连接情况的数组 :长度为 的描述道路长度的数组- 该函数要返回能被某个封锁时刻分配方案实现的最大便利分数
- 每个测试用例可以多次调用该函数
例子
考虑以下调用:
max_score(7, 0, 2, 10, [0, 0, 1, 2, 2, 5], [1, 3, 2, 4, 5, 6], [2, 3, 4, 2, 5, 3])
这对应以下道路网络:
假设封锁时刻如下分配:
城市 | |||||||
---|---|---|---|---|---|---|---|
封锁时刻 |
注意所有封锁时刻之和为
考虑另外一个调用:
max_score(4, 0, 3, 20, [0, 1, 2], [1, 2, 3], [18, 1, 19])
这对应以下道路网络:
假设封锁时间如下分配:
城市 | ||||
---|---|---|---|---|
封锁时刻 |
城市
评测程序示例
令 max_score
的次数。
评测程序示例按以下格式读取输入:
- 第
行:
以下是
评测程序示例按以下格式读取每个场景的描述:
- 第
行: - 第
行( ):
评测程序示例按以下格式为每个场景打印单独一行。
- 第
行:max_score
的返回值
样例 #1
样例输入 #1
2 7 0 2 10 0 1 2 0 3 3 1 2 4 2 4 2 2 5 5 5 6 3 4 0 3 20 0 1 18 1 2 1 2 3 19
样例输出 #1
6 3
约束条件
(对每个 满足 ) (对每个 满足 )- 利用这些道路可以从任意一个城市走到任意另外一个城市。
,其中 是所有调用函数max_score
的 的总和。
子任务
我们说一个道路网络是线性的如果道路
- (8 分)从城市
到城市 的路径长度大于 。 - (9 分)
,道路网络是线性的。 - (12 分)
,道路网络是线性的。 - (14 分)
,道路网络是线性的。 - (9 分)
- (11 分)
- (10 分)
- (10 分)
- (17 分)无额外的约束条件。
时间限制:
空间限制: