luogu#P9550. 「PHOI-1」晚宴筵

「PHOI-1」晚宴筵

题目背景

小 X 在 Z 市长途奔波之后,他要去参加别人的晚宴。

题目描述

Z 市形如一个 n×nn \times n 的矩阵,小 X 打算仅使用瞬移机和时空穿越机到达别人的晚宴,若小 X 所在的位置 (p,q)(p,q) 满足 l1xpr1xl1_x \le p \le r1_x 且 $l2_y \le q \le r2_y(0 \le l1_x \le r1_x < x,0\le l2_y\le r2_y < y)$,那么小 X 就可以到达位置 (x,y)(x,y)

但是由于瞬移技术不太成熟以及时空穿越机的影响,瞬移时需花费 wp+wq+wx+wypqxyw_p+w_q+w_x+w_y-p-q-x-y 秒(由于时空穿越机的特性,时间可能为负)。若下标不是正整数,瞬移机就会被损坏,所以小 X 只能到达都是正整数的下标。

现在小 X 在 (1,1)(1,1) 的位置,他要参加别人的晚宴,可是他目前不知道别人的晚宴在哪里,所以他想让你求,他到达每个地方 (x,y)  (1x,yn)(x,y)\text{ }\text{ }(1 \leq x,y \leq n) 所花费的最少时间,如果不能到达则输出 inf

输入格式

11 行一个整数 nn,表示矩阵的大小。

22nn 个非负整数分别表示 l11,l12l1nl1_1,l1_2 \ldots l1_n

33nn 个非负整数分别表示 r11,r12r1nr1_1,r1_2 \ldots r1_n

44nn 个非负整数分别表示 l21,l22l2nl2_1,l2_2 \ldots l2_n

55nn 个非负整数分别表示 r21,r22r2nr2_1,r2_2 \ldots r2_n

66nn 个非负整数分别表示 w1,w2wnw_1,w_2 \ldots w_n

数据保证 l1ir1i,l2ir2il1_i \leq r1_i,l2_i \leq r2_i

输出格式

输出 nn 行,每行 nn 个整数,第 ii 行第 jj 列的整数表示小 X 从 (1,1)(1,1)(i,j)(i,j) 的最短路。

3
0 1 1
0 1 2
0 0 2
0 1 2
2 0 4
0 inf inf
inf -2 inf
inf 1 -4
10
0 1 1 2 2 2 3 3 3 3
0 1 2 2 3 3 3 4 4 4
0 1 2 2 3 3 3 3 4 4
0 1 2 3 4 4 5 5 5 5
8 4 2 1 2 4 8 4 2 1
0 inf inf inf inf inf inf inf inf inf
inf 18 inf inf inf inf inf inf inf inf
inf 15 20 18 inf inf inf inf inf inf
inf inf 18 16 inf inf inf inf inf inf
inf inf 12 10 8 9 12 7 4 2
inf inf 13 11 9 10 13 8 5 3
inf inf 16 14 12 13 16 11 8 6
inf inf 11 7 3 4 7 2 -1 -3
inf inf 8 4 0 1 4 -1 -4 -6
inf inf 6 2 -2 -1 2 -3 -6 -8

提示

本题采用捆绑测试。

Subtask nn l1i,l2il1_i,l2_i wiw_i 分值
00 1n701 \le n \le 70 无特殊限制 iwi105(1in)i \leq w_i \leq 10^5(1 \leq i \leq n) 1515
11 无特殊限制 2525
22 无特殊限制 l1i=l2i=r1i=r2i=1(2in)l1_i=l2_i=r1_i=r2_i=1(2\le i \le n) 55
33 无特殊限制 5555

对于 100%100\% 的数据,保证 $1 \leq n \leq 10^3,0 \leq l1_i \leq r1_i \leq n,0 \leq l2_i \leq r2_i \leq n,0 \leq w_i \leq 10^5$ ,l1ir1i<i,l2ir2i<i,l1_i \leq r1_i < i,l2_i \leq r2_i < i

样例解释 #1:

  • (1,1)(1,1)(1,1)(1,1) 显然要花费 00 秒。

  • (1,1)(1,1) 可以直接到 (2,2)(2,2), 花费 w1+w1+w2+w21122=2w_1 + w_1 + w_2 + w_2 - 1 - 1 - 2 - 2 = -2 秒。

  • (1,1)(1,1) 也可以直接到 (3,2)(3,2), 花费 w1+w1+w3+w21132=1w_1 + w_1 + w_3 + w_2 - 1 - 1 - 3 - 2 = 1 秒。

  • 要从 (1,1)(1,1) 到达 (3,3)(3,3),要先从 (1,1)(1,1) 到达 (2,2)(2,2),再从 (2,2)(2,2) 到达 (3,3)(3,3)。花费 $w_1 + w_1 + w_2 + w_2 - 1 - 1 - 2 - 2 + w_2 + w_2 + w_3 + w_3 - 2 - 2 - 3 - 3 = -4$ 秒。

  • 经过手算,可以发现,从 (1,1)(1,1) 不能到达其他位置。