#P15065. [UOI 2024 II Stage] Mole

    ID: 15097 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 难度: 5 上传者: 标签>2024Special Judge广度优先搜索 BFSUOI(乌克兰)

[UOI 2024 II Stage] Mole

说明

经过一番艰苦的研究,Anton 决定去他的乡间别墅放松一下。他有一个美丽的花园,里面种着许多不同的花。但是,糟糕的是,他一到就发现地上有很多洞。是鼹鼠!

现在,Anton 将手持铁锹等待鼹鼠的出现。鼹鼠可能从任何一个洞里钻出来。Anton 想要选择一个位置,使得在最坏情况下,他跑到鼹鼠那里所需的时间最短

花园可以表示为一个 n×mn \times m 的矩阵,其中 nn 是行数,mm 是列数。行从上到下编号为 11nn。列从左到右编号为 11mm。因此,索引为 (1;1)(1;1) 的单元格位于左上角。

花园的每个单元格 ai,ja_{i, j} 描述了该单元格的状态:

  • ai,ja_{i, j} = .\tt{.} —— 该单元格没有花或洞;
  • ai,ja_{i, j} = F\tt{F} —— 该单元格有花;
  • ai,ja_{i, j} = H\tt{H} —— 该单元格有洞。

Anton 还知道洞的数量不超过 100100

作为一个在这些花上投入了大量时间的人,你不忍心践踏它们。因此,你需要找到一条不经过它们的路径。

在任何时刻,Anton 可以从位置 (x,y)(x, y) 移动到以下任意一个位置:(x1,y)(x-1,y)(x+1,y)(x+1,y)(x,y1)(x,y-1)(x,y+1)(x,y+1),前提是新位置不包含花且在花园范围内。

请找出所有位置 (x,yx,y),使得 Anton 在最坏情况下跑到鼹鼠那里所需的时间最短。

输入格式

  • 第一行包含两个整数 nnmm1nm21051 \le n \cdot m \le 2 \cdot 10^5)——花园的长度和宽度。
  • 接下来的 nn 行,每行包含 mm 个字符——花园的描述。

保证从每个不包含花的单元格出发,可以通过不经过花的单元格到达任何其他不包含花的单元格。

保证至少有一个洞,且花园中洞的数量不超过 100100

输出格式

  • 第一行输出一个整数 xx1xnm1 \leq x \leq n \cdot m)——最优位置的数量。
  • 接下来的 xx 行,每行输出一个等待鼹鼠的最优位置 (x;yx;y)(1xn1 \le x \le n1ym1 \le y \le m)。

位置可以按任意顺序输出。

3 4
HF.F
..HF
FF.F
2
2 1
2 2
4 9
......FFH
.F..FHFF.
HF.......
.FHF..FFF
2
1 6
3 4

提示

:::align{center} :::

kk 为花园中洞的数量。

  • 66 分):n=1,m=2n = 1, m = 2
  • 99 分):n=1n = 1
  • 1515 分):k=1,nm5103k = 1, n \cdot m \le 5 \cdot 10^3
  • 2222 分):nm5103n \cdot m \le 5 \cdot 10^3
  • 1717 分):k=1k = 1
  • 3131 分):无额外限制。

翻译由 DeepSeek V3 完成