#S0023. 封路对弈(maze)

封路对弈(maze)

题目描述

一座实验场由 hh 行 ww 列方格组成。字符 # 表示墙,. 表示普通空地,S 和 T 分别表示起点与终点。每次移动只能走到上、下、左、右相邻的非墙格子。起点和终点各有一个,初始时互相可达,且不直接相邻。

甲、乙轮流封路,甲先行动。每次行动必须选择一个普通空地,将它永久变成墙。如果某次行动首次使起点无法到达终点,进行这次行动的人立即获胜。

不能封住起点或终点,但可以选择与起点、终点都不连通的普通空地。假设双方都采用最优策略,请判断谁会获胜。

输入格式

第一行包含两个整数 h,wh,w,表示实验场的行数和列数。

接下来 hh 行,每行包含一个长度为 ww 的字符串,依次描述实验场的各行。

输出格式

输出一行。若甲获胜,输出 First;若乙获胜,输出 Second。

样例输入 1

3 3
S..
.#.
..T

样例输出 1

Second

样例 1 解释

所有非墙格子围成一个环。甲无论先封住哪一格,乙都能在剩余的起终点通路上再封住一格,使两点不连通。因此乙获胜,输出 Second。

样例输入 2

3 4
S.#.
#.#T
#...

样例输出 2

First

样例 2 解释

甲封住第 11 行第 22 列的格子,就能立即使起点无法到达终点。因此甲获胜,输出 First。

数据范围与子任务

对于所有测试数据,保证2≤h,w≤10002\le h,w\le1000。字符只包含 #、.、S、T,并满足描述中的可达与不相邻条件。第三组中的“树”指把非墙格子作为顶点、相邻格子间连边,所得无向图连通且无环。

每个子任务内的正式测试全部通过,才获得该子任务的分数。

子任务编号 分值 额外限制
1 20 hw≤16hw\le16
2 hw≤2500hw\le2500
3 所有非墙格子连成一棵树
4 40 无额外限制