编程题
### 问题描述 小齐和她的牛牛们正在进行一场海岛度假。这片海域有 $N$($1 \leq N \leq 15$)个岛屿,它们分布在一个 $R \times C$($1 \leq R, C \leq 50$)的方格网格上。每个岛屿都是由标记为 $X$ 的相邻方格组成的最大连通区域构成,其中两个 $X$ 方格如果共享一条边则被视为相邻(因此,共享角点的两个 $X$ 不一定相邻)。 由于小齐迟到了,所以她和农夫约翰一同乘坐直升机抵达。她可以选择首先降落在任何一个岛上。小齐希望至少访问每个岛一次,因此她将在岛屿之间穿越,直到她至少访问过所有 $N$ 个岛。 约翰的直升机剩余燃料不多,所以他不希望在牛牛们决定回家之前就用光燃料。幸运的是,方格网格中的一些方格是浅水,用 $S$ 表示。小齐可以沿着这些方格在四个基本方向(北、东、南、西)上下游泳,以在岛屿之间进行移动。她还可以在岛屿和浅水之间自由移动,反之亦然。 找出小齐为了访问所有岛屿而必须游泳的最短距离(小齐游泳的距离是她站在标记为 $S$ 的方格上的次数)。在查看了该地区的地图后,小齐知道这是可能的。 ### 输入格式 第 $1$ 行:两个用空格分隔的整数 $R$ 和 $C$。 第 $2$ 行到第 $R+1$ 行:每行包含 $C$ 个字符,表示网格的每一行。深水方格用 $.$ 表示,岛屿方格用 $X$ 表示,浅水方格用 $S$ 表示。 ### 输出格式 一个整数,表示小齐为了访问所有岛屿而必须游泳的最短距离。 ### 样例输入 ``` 5 4 XX.S .S.. SXSS S.SX ..SX ``` ### 样例输出 ``` 3 ``` ### 评测数据规模 $1 \leq R, C \leq 50$,$1 \leq N \leq 15$。
查看答案
赣ICP备20007335号-2