SP7010 ACAB - Police Business
题目描述
警察是一群极具吸引力的人物。在电影中,他们通常被描绘成肥胖和懒惰的样子,但实际上,他们有很多超乎想象的特点!今天的主角,警官 Acab,就是个喜欢哲学的例子。所有罪犯都畏惧 Acab,一旦他出现在某个城市,罪犯们无一敢入。他时常参与追车行动,因此会自问几个关键问题:如果我知道有一个罪犯要从城市 $a$ 前往城市 $b$,那么有多少其他城市(不包括 $a$ 和 $b$)是没有其他警察驻守的,并且一旦我到达那个城市,罪犯就无法继续他的旅程?如果按与 $a$ 的距离排序,第 $k$ 个城市是哪一个?另外,有多少条道路在没有其他警察巡逻的情况下是可以阻止罪犯从 $a$ 到 $b$ 的?如果同样按与 $a$ 的距离排序,第 $k$ 条道路是哪一条?
给定连接城市的双向道路列表,请编写程序回答 Acab 的问题。我们知道起初没有警察驻守任何城市。每对城市之间至少存在一条路径。
有时候,Acab 的警察朋友会通知他,他们已经驻入了某个城市或道路。任何一个城市或道路上最多只有一个警察驻守。因此,当同一城市或道路被第二次报告时,我们视作该警察已离开。也就是说,如果一个城市或道路被报告偶数次,那么那里没有警察;反之,奇数次报告则说明有警察在场。
**注意**:道路和某城市的距离,定义为该道路两端与该城市距离的较小值。尽管 Acab 是个出色的警察,他没有那种可以同时出现在多个地点的特殊能力,因此他每次只能出现在一个城市。如果发生距离相等的情况,请返回索引较小者。**另外,其他警察可没 Acab 那么厉害,他们只能阻止 Acab 进入某城市,而不会阻止罪犯。**
输入格式
输入首行为两个整数 $N$ 和 $M$,表示城市和道路的数量($1 \leq N \leq M \leq 100000$)。
接下来的 $M$ 行每行有两个整数 $a$ 和 $b$($1 \leq a, b \leq N$),表示城市 $a$ 和城市 $b$ 之间的双向道路。
城市编号从 $1$ 到 $N$。
接下来的一行是一个整数 $Q$,表示查询数量($1 \leq Q \leq 200000$)。
接下来的 $Q$ 行,每行是一个查询,可能有以下六种类型:
- `1 n` - 警察通知 Acab,他在城市 $n$。
- `2 e` - 警察通知 Acab,他在道路 $e$ 上。
- `3 a b` - 告诉 Acab 他可以阻止罪犯的城市数量。
- `4 a b` - 告诉 Acab 他可以阻止罪犯的道路数量。
- `5 a b k` - 告诉 Acab 他可以阻止罪犯的第 $k$ 个城市是哪个。
- `6 a b k` - 告诉 Acab 他可以阻止罪犯的第 $k$ 条道路是哪一条。
输出格式
对于每个类型为 `3`、`4`、`5`或 `6` 的查询,输出一行答案。如果在查询 `5` 或 `6` 中 $k$ 大于实际可访问的城市或道路数量,输出 `-1`。此外,在查询 `2` 和 `6` 中,假设道路的编号是其在输入中的索引。
**本翻译由 AI 自动生成**