由于某些原因本题仅支持 C++ 各版本语言的提交。
印度尼西亚有
接下来的
为了避免拥塞,两辆车不应在任何时间点碰面。更具体地,两辆车不能在同一个时间点出现在同一个城市。同样地,两辆车也不应该沿相反的方向同时行驶过同一条道路。 另外,汽车行驶过一条道路时必须完整经过道路并到达道路另一端的城市(换句话说, 汽车不允许在道路中间掉转方向)。但是,汽车可以多次到达一个城市或是多次经过一 条道路。此外,汽车可以在任何时间在任何城市等候。
由于高燃料容量汽车的价格昂贵,两个城市都分别希望选择一条路线,使得两辆汽车所需的最大单位汽油容量最小。每个城市中都有加油站并且供油量是无限的,因此汽车所需的单位汽油容量实际上就是行驶过的道路中最大的单位汽油消耗量。
实现细节
你必须引用 swap.h
头文件。
你必须实现 init
和 getMinimumFuelCapacity
函数。
void init(int N, int M, std::vector<int> U, std::vector<int> V, std::vector<int> W)
:一个整数表示城市数。 :一个整数表示道路数。 :一个长为 的整数序列表示道路的第一个端点城市。 :一个长为 的整数序列表示道路的第二个端点城市。 :一个长为 的整数序列表示道路的汽油消耗。
该函数将在所有 getMinimumFuelCapacity
的调用前被评测库恰好调用一次。
int getMinimumFuelCapacity(int X, int Y)
:一个整数表示第一个城市。 :一个整数表示第二个城市。- 该函数必须返回一个整数,表示根据题目描述中的规则,两辆分别从第
个城市与第 个城市出发要到达彼此城市的车,它们的单位汽油容量最大值的最小值。若无法满足题目规则则返回 。
该函数将被评测库调用恰好
样例评测库
样例评测库将读入以下格式的数据:
N M U[0] V[0] W[0] U[1] V[1] W[1] . . . U[M-1] V[M-1] W[M-1] Q X[0] Y[0] X[1] Y[1] . . . X[Q-1] Y[Q-1]
对每个 getMinimumFuelCapacity
的调用,样例评测库会输出该函数的返回值。
样例一
input
5 6 0 1 4 0 2 4 1 2 1 1 3 2 1 4 10 2 3 3 3 1 2 2 4 0 1
output
3 10 4
explanation
样例二
见下载文件中的 ex_swap2.in
与 ex_swap2.ans
。对应的图如下:
数据范围
对于
- 任意两个城市间至多存在一条道路直接相连。
- 任意两个城市经过道路可以互相到达。
子任务 | 附加限制 | 分值 | 依赖的数据包 |
---|---|---|---|
每个城市至多是两条道路的一个端点。 | 1, 2, 3, 4, 9 | ||
1, 5 | |||
1, 2, 6, 10 | |||
1, 2, 3, 6, 7, 10, 11 | |||
1, 2, 3, 4, 5, 6, 7, 8 | |||
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 |
实际测试中,前 12 个 subtask 为数据包,后 6 个 subtask 为 6 个子任务。
时间限制:
空间限制: