QOJ.ac

QOJ

Time Limit: 5 s Memory Limit: 512 MB Total points: 100

#791. Mousetrap

統計

题目描述

大象 Dumbo 有一个巨大的迷宫,包含 $n$ 个房间(编号为 $1 \dots n$)和 $n-1$ 条通道,使得从任何一个房间都可以到达其他任何房间。不幸的是,一只老鼠溜进了迷宫。Dumbo 非常害怕老鼠,因此他在房间 $t$ 设置了一个捕鼠器。显然,老鼠会避开有陷阱的房间,所以 Dumbo 必须想出一个更好的策略来诱捕老鼠。老鼠会不停地奔跑,除非它无路可走。Dumbo 还知道,老鼠经过的每一条通道都会留下肮脏的粪便和足迹,老鼠之后会拒绝再次使用这些肮脏的通道。Dumbo 可以清理一条肮脏的通道,或者用石头封锁一条通道。通过封锁或清理通道,他希望迫使老鼠跑进陷阱。他希望以最少的步数完成这一目标,因为他在老鼠面前会感到非常不安。

我们可以将此描述为一个双人游戏。老鼠试图最大化 Dumbo 的步数,而 Dumbo 试图以最少的步数获胜。第一位玩家是 Dumbo。在他的回合中,他可以清理迷宫中的一条肮脏通道,或者封锁一条通道。被封锁的通道是否肮脏并不重要。他不能解封一条通道。然而,他可以选择什么都不做。Dumbo 选择什么都不做的回合不计入步数。当轮到老鼠时,老鼠会选择一条干净且未被封锁的通道,并沿着该通道跑到相邻的房间。如果老鼠当前所在的房间没有这样的通道,老鼠就不会移动。

最初,所有的通道都是干净的,老鼠在房间 $m$,陷阱在房间 $t$,且轮到 Dumbo 行动。如果双方都采取最优策略(老鼠的目标是最大化 Dumbo 的步数),Dumbo 需要的最少步数(清理和封锁通道的总数)是多少?

输入格式

第一行包含整数 $n$、$t$ 和 $m$,用空格分隔。接下来有 $n-1$ 行。每行包含两个整数 $a_i$ 和 $b_i$,用空格分隔,表示房间 $a_i$ 和 $b_i$ 之间有一条通道。

注意:输入规模较大。

数据范围

  • $1 \le n, t, m \le 10^6$

子任务

  • 子任务 1(20 分):$n \le 10$
  • 子任务 2(25 分):保证房间 $m$ 和 $t$ 之间存在一条通道。
  • 子任务 3(20 分):$n \le 1000$
  • 子任务 4(35 分):无额外限制。

输出格式

你的程序应该输出 Dumbo 的步数。

样例

输入 1

10 1 4
1 2
2 3
2 4
3 9
3 5
4 7
4 6
6 8
7 10

输出 1

4

说明 1

一种可能的方案: Dumbo 封锁房间 4 和 7 之间的通道。 老鼠移动到房间 6。房间 4 和 6 之间的通道现在变脏了。 Dumbo 封锁房间 6 和 8 之间的通道。 老鼠无法移动。 Dumbo 清理房间 4 和 6 之间的通道。 老鼠移动到房间 4。房间 4 和 6 之间的通道变脏了。 Dumbo 封锁房间 2 和 3 之间的通道。 老鼠移动到房间 2。房间 2 和 4 之间的通道变脏了。 Dumbo 什么都不做。 老鼠只能移动到房间 1 并被捕获。

Dumbo 总共进行了 4 步操作。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.