#P17375. PM17281 TreelandStreetView
PM17281 TreelandStreetView
题目描述
Treeland 的道路结构是一棵树,共有 个地点,编号为 到 。对于每个 ,地点 parent[i] 与地点 之间有一条双向道路,长度为 plength[i]。
现在要让装有摄像机的汽车遍历 Treeland,从而获得完整的街景。第 辆车初始停在地点 carNode[j],拥有 carGas[j] 单位汽油。
汽车的移动是连续的,汽车可视为点。移动一单位距离恰好消耗一单位汽油。所有汽车合起来必须访问整棵树的每一部分:不仅所有地点要被访问,每条道路上的每一个位置也都要被至少一辆车经过。允许同一部分被多辆车重复经过。
当两辆或更多汽车位于同一个位置时,它们可以任意交换汽油。这一位置可以是某个地点,也可以是道路内部的任意点;交换量可以是任意实数,因此一辆车持有的汽油也可能超过它的初始油量。
请判断是否存在一种移动和汽油交换方案,使所有道路都被完整覆盖。如果可行输出 possible,否则输出 impossible。
输入格式
为了与测试数据保持统一,四个数组都使用“长度 + 元素”的形式输入。
- 第一行:整数 ;
- 第二行:整数 ,表示
parent的长度; - 第三行: 个整数
parent[i]; - 第四行:整数 ,表示
plength的长度; - 第五行: 个整数
plength[i]; - 第六行:整数 ,表示
carNode的长度; - 第七行: 个整数
carNode[j]; - 第八行:整数 ,表示
carGas的长度; - 第九行: 个整数
carGas[j]。
保证 ,且 。
输出格式
若可以完成整棵树的街景覆盖,输出:
possible
否则输出:
impossible
数据范围
- ;
parent恰有 个元素,且 ;plength恰有 个元素,且 ;- 汽车数量在 到 之间;
- ;
- 。
样例输入
5
4
0 0 0 0
4
7 8 9 10
4
1 0 0 0
4
34 0 0 0
样例输出
possible
样例说明
这是一棵以地点 为中心的星形树。一辆车从地点 出发并拥有 单位汽油,其余三辆车在地点 且没有汽油。第一辆车走到地点 后还剩 单位汽油,可以把这些汽油分给其他车辆,从而使剩余三条道路都被完整覆盖。