#L0038. 校园晨跑打卡
校园晨跑打卡
题目背景
某年秋季联赛提高组第一天第二题。
题目描述
小舟觉得晨跑特别有意思,干脆自己动手做了一款名为《校园晨跑》的养成小游戏,玩家每天按时上线完成打卡任务。
游戏的地图可以看作一棵包含 个结点和 条边的树:每条边连接两个结点,任意两个结点之间都存在路径互相可达,结点按 到 编号。
游戏里有 位玩家,第 位玩家的起点是 ,终点是 。每天打卡任务开启时,所有玩家在第 秒同时从各自起点出发,以每秒跑过一条边的速度,沿最短路径不停地奔向自己的终点,到达终点即完成当天的打卡。(地图是一棵树,因此每个人的行进路线唯一确定。)
为了统计游戏热度,小舟在每个结点上安排了一名观察员。结点 的观察员只在第 秒抬头看一眼:一位玩家能被这名观察员看到,当且仅当他在第 秒恰好到达结点 。小舟想知道,每名观察员各自能看到多少位玩家?
注意:玩家到达终点后就立即退出游戏,不能停在原地等待之后再被看到。也就是说,对于以结点 为终点的玩家:若他在第 秒之前就已到达,结点 的观察员看不到他;若他恰好在第 秒到达终点,观察员可以看到他。
输入格式
第一行两个整数 和 ,其中 表示树的结点数量(也是观察员的数量), 表示玩家数量。
接下来 行,每行两个整数 、,表示结点 与结点 之间有一条边。
接下来一行 个整数,第 个整数为 ,表示结点 的观察员抬头的时刻。
接下来 行,每行两个整数 、,表示一位玩家的起点与终点。
对于所有数据,保证 ,。
输出格式
输出一行 个整数,第 个整数表示结点 的观察员能够看到的玩家数量。
样例
6 3
2 3
1 2
1 4
4 5
4 6
0 2 5 1 2 3
1 5
1 3
2 62 0 0 1 1 1
5 3
1 2
2 3
2 4
1 5
0 1 0 3 0
3 1
1 4
5 51 2 1 0 1
提示
样例 1 说明
对于 号点,,只有起点在 号点的玩家才会被看到,因此玩家 和玩家 被看到,共 人。
对于 号点,第 秒时没有玩家位于此结点,共 人。
对于 号点,第 秒时没有玩家位于此结点,共 人。
对于 号点,玩家 被看到,共 人。
对于 号点,玩家 被看到,共 人。
对于 号点,玩家 被看到,共 人。
子任务
各测试点的数据规模及特点如下表所示。(数据范围个位上的数字可以帮助判断数据类型。)
| 测试点编号 | $n=$ | $m=$ | 约定 |
|---|---|---|---|
| $1\sim 2$ | $991$ | $991$ | 所有人的起点等于自己的终点,即 $\forall i,\ s_i=t_i$ |
| $3\sim 4$ | $992$ | $992$ | 所有 $w_j=0$ |
| $5$ | $993$ | $993$ | 无 |
| $6\sim 8$ | $99994$ | $99994$ | $\forall i\in[1,n-1]$,$i$ 与 $i+1$ 有边,即树退化成 $1,2,\dots,n$ 按顺序相连的链 |
| $9\sim 12$ | $99995$ | $99995$ | 所有 $s_i=1$ |
| $13\sim 16$ | $99996$ | $99996$ | 所有 $t_i=1$ |
| $17\sim 19$ | $99997$ | $99997$ | 无 |
| $20$ | $299998$ | $299998$ | 无 |
提示
评测环境中调用栈空间不单独设限,但递归层数过深(例如树退化为链时)仍可能耗尽栈空间导致崩溃,请注意程序所需的栈空间,调用栈占用的空间会计入总内存。
- ID
- 772
- 类型
- 传统题
- Time Limit
- 2000ms
- Memory Limit
- 512MiB
- 上传者