题目描述
译自 ROI 2014 Day2 T3. Здоровое питание
某大学的学生园区是一个 n×n 的正方形网格,每个格子内都有一座建筑。相邻格子(即有公共边的格子)内的建筑通过通道相连。左上角的格子是学生宿舍,右下角的格子是教学楼。
园区内每座建筑(包括学生宿舍和教学楼)都有一台自动售货机,每台售货机只出售一种产品,例如只卖咖啡或只卖肉馅饼。学生每天从宿舍走到教学楼,选择一条最短路径通过通道前往。
大学管理层关注学生在沿途购买食物时的饮食多样性。对于每台售货机 Ai,j,计划找到一条从宿舍到教学楼的最短路径,该路径经过这台售货机,并且包含尽可能多出售与 Ai,j 相同产品的售货机。这条路径上出售相同产品的售货机数量称为售货机 Ai,j 的冗余度。其中,售货机 A1,1 位于宿舍,售货机 An,n 位于教学楼。
你需要编写一个程序,根据售货机出售的产品信息,计算出从 1 到 2n−1 的每个冗余度值对应的售货机数量。
输入格式
输入文件的第一行包含一个整数 n (2≤n≤1500)。
接下来的 n 行,每行包含 n 个数字。第 i 行第 j 个数字表示售货机 Ai,j 出售的产品编号。产品编号的范围为 1 到 n2。
输出格式
输出文件应包含 2n−1 个整数,分别表示冗余度为 1,2,…,2n−1 的售货机数量。
3
1 1 1
2 2 2
3 3 3
0 0 9 0 0
5
1 4 1 3 5
2 1 4 1 2
5 1 1 4 5
3 5 1 1 2
4 3 5 1 1
2 4 9 0 0 1 1 8 0
数据范围与提示
本题包含 50 个独立测试点,每个测试点价值 2 分,总分为 100 分。测试点的评分是独立的,具体限制条件如下表所示:
| 测试点 |
n 值 |
测试点 |
n 值 |
测试点 |
n 值 |
测试点 |
n 值 |
测试点 |
n 值 |
| 1 |
2 |
11 |
50 |
21 |
200 |
31 |
550 |
41 |
1050 |
| 2 |
4 |
12 |
60 |
22 |
225 |
32 |
600 |
42 |
1100 |
| 3 |
6 |
13 |
70 |
23 |
250 |
33 |
650 |
43 |
1150 |
| 4 |
8 |
14 |
80 |
24 |
275 |
34 |
700 |
44 |
1200 |
| 5 |
10 |
15 |
90 |
25 |
300 |
35 |
750 |
45 |
1250 |
| 6 |
15 |
16 |
100 |
26 |
325 |
36 |
800 |
46 |
1300 |
| 7 |
20 |
17 |
120 |
27 |
350 |
37 |
850 |
47 |
1350 |
| 8 |
25 |
18 |
140 |
28 |
400 |
38 |
900 |
48 |
1400 |
| 9 |
30 |
19 |
160 |
29 |
450 |
39 |
950 |
49 |
1450 |
| 10 |
40 |
20 |
180 |
30 |
500 |
40 |
1000 |
50 |
1500 |