史蒂夫玩跑酷
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述


史蒂夫身处一个由方块构成的二维网格世界,该世界可视为一个长为n行、宽为m列的平面网格。每个坐标(x,y) 代表一个方块的潜在位置(1 \leq x \leq n ,1 \leq y \leq m)。部分位置已有方块,史蒂夫可以在任意空位预先放置新方块(无需支撑),之后从起点(x_s,y_s)跳跃至终点(x_t,y_t)
史蒂夫能从(x_1,y_1)跳跃到(x_2,y_2)的充要条件是:
1.(x_2,y_2)位置有方块(起点与终点所在的位置有方块
2.(x_1,y_1)(x_2,y_2)的欧几里得距离小于或等于k,即 \sqrt{(x_1-x_2)^2+(y_1-y_2)^2} \leq k
求:最少需放置多少方块才能到达终点?在满足最少方块的前提下,最少需跳跃几次?

输入描述:

第一行包括三个正整数
n,m,k (1 \leq n,m \leq 1 \times 10^5,n \times m \leq 1 \times 10^5,1 \leq k \leq 5)
接下来n行,每行包括m个字符
对于第i行第j列的字符:
若为s,则为起点所在方块
若为t,则为终点所在方块
若为1,表示该位置有方块,但不是起点或终点
若为0,表示没有方块
数据保证一定有st出现,且不会有其他字符出现

输出描述:

两个整数,第一个表示至少要放置的方块数,第二个表示在放置最少方块的前提下,史蒂夫从起点跳跃到达终点的最小次数,两个整数中间用空格隔开
示例1

输入

复制
5 5 1
11111
0000s
11111
10000
1111t

输出

复制
0 11
示例2

输入

复制
3 10 2
s00100000t
1001001010
1111000000

输出

复制
1 7
示例3

输入

复制
5 5 3
s0000
00000
00000
00000
0000t

输出

复制
1 2