#P17375. PM17281 TreelandStreetView

PM17281 TreelandStreetView

题目描述

Treeland 的道路结构是一棵树,共有 NN 个地点,编号为 00N1N-1。对于每个 0iN20\le i\le N-2,地点 parent[i] 与地点 i+1i+1 之间有一条双向道路,长度为 plength[i]

现在要让装有摄像机的汽车遍历 Treeland,从而获得完整的街景。第 jj 辆车初始停在地点 carNode[j],拥有 carGas[j] 单位汽油。

汽车的移动是连续的,汽车可视为点。移动一单位距离恰好消耗一单位汽油。所有汽车合起来必须访问整棵树的每一部分:不仅所有地点要被访问,每条道路上的每一个位置也都要被至少一辆车经过。允许同一部分被多辆车重复经过。

当两辆或更多汽车位于同一个位置时,它们可以任意交换汽油。这一位置可以是某个地点,也可以是道路内部的任意点;交换量可以是任意实数,因此一辆车持有的汽油也可能超过它的初始油量。

请判断是否存在一种移动和汽油交换方案,使所有道路都被完整覆盖。如果可行输出 possible,否则输出 impossible

输入格式

为了与测试数据保持统一,四个数组都使用“长度 + 元素”的形式输入。

  • 第一行:整数 NN
  • 第二行:整数 PP,表示 parent 的长度;
  • 第三行:PP 个整数 parent[i]
  • 第四行:整数 QQ,表示 plength 的长度;
  • 第五行:QQ 个整数 plength[i]
  • 第六行:整数 C1C_1,表示 carNode 的长度;
  • 第七行:C1C_1 个整数 carNode[j]
  • 第八行:整数 C2C_2,表示 carGas 的长度;
  • 第九行:C2C_2 个整数 carGas[j]

保证 P=Q=N1P=Q=N-1,且 C1=C2C_1=C_2

输出格式

若可以完成整棵树的街景覆盖,输出:

possible

否则输出:

impossible

数据范围

  • 2N1002\le N\le100
  • parent 恰有 N1N-1 个元素,且 0parent[i]i0\le parent[i]\le i
  • plength 恰有 N1N-1 个元素,且 1plength[i]1061\le plength[i]\le10^6
  • 汽车数量在 11100100 之间;
  • 0carNode[j]<N0\le carNode[j]<N
  • 0carGas[j]1060\le carGas[j]\le10^6

样例输入

5
4
0 0 0 0
4
7 8 9 10
4
1 0 0 0
4
34 0 0 0

样例输出

possible

样例说明

这是一棵以地点 00 为中心的星形树。一辆车从地点 11 出发并拥有 3434 单位汽油,其余三辆车在地点 00 且没有汽油。第一辆车走到地点 00 后还剩 2727 单位汽油,可以把这些汽油分给其他车辆,从而使剩余三条道路都被完整覆盖。