#S0023. 封路对弈(maze)
封路对弈(maze)
题目描述
一座实验场由 行 列方格组成。字符 # 表示墙,. 表示普通空地,S 和 T 分别表示起点与终点。每次移动只能走到上、下、左、右相邻的非墙格子。起点和终点各有一个,初始时互相可达,且不直接相邻。
甲、乙轮流封路,甲先行动。每次行动必须选择一个普通空地,将它永久变成墙。如果某次行动首次使起点无法到达终点,进行这次行动的人立即获胜。
不能封住起点或终点,但可以选择与起点、终点都不连通的普通空地。假设双方都采用最优策略,请判断谁会获胜。
输入格式
第一行包含两个整数 ,表示实验场的行数和列数。
接下来 行,每行包含一个长度为 的字符串,依次描述实验场的各行。
输出格式
输出一行。若甲获胜,输出 First;若乙获胜,输出 Second。
样例输入 1
3 3
S..
.#.
..T
样例输出 1
Second
样例 1 解释
所有非墙格子围成一个环。甲无论先封住哪一格,乙都能在剩余的起终点通路上再封住一格,使两点不连通。因此乙获胜,输出 Second。
样例输入 2
3 4
S.#.
#.#T
#...
样例输出 2
First
样例 2 解释
甲封住第 行第 列的格子,就能立即使起点无法到达终点。因此甲获胜,输出 First。
数据范围与子任务
对于所有测试数据,保证。字符只包含 #、.、S、T,并满足描述中的可达与不相邻条件。第三组中的“树”指把非墙格子作为顶点、相邻格子间连边,所得无向图连通且无环。
每个子任务内的正式测试全部通过,才获得该子任务的分数。
| 子任务编号 | 分值 | 额外限制 |
|---|---|---|
| 1 | 20 | |
| 2 | ||
| 3 | 所有非墙格子连成一棵树 | |
| 4 | 40 | 无额外限制 |