#P2222. [HNOI2001] 矩阵乘积

[HNOI2001] 矩阵乘积

题目描述

已知矩阵:

$$A_{m\times n}=\begin{bmatrix}a_{1,1} & a_{1,2} & \cdots & a_{1,n}\\ a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\ \vdots & \vdots & \ddots & \vdots\\ a_{m,1} & a_{m,2} & \cdots &a_{m,n} \end{bmatrix} ,B_{n\times p}=\begin{bmatrix}b_{1,1} & b_{1,2} & \cdots & b_{1,p}\\ b_{2,1} & b_{2,2} & \cdots & b_{2,p} \\ \vdots & \vdots & \ddots & \vdots\\ b_{n,1} & b_{n,2} & \cdots &b_{n,q} \end{bmatrix} $$

当矩阵 AA 的列数与矩阵 BB 的行数相同时,则 AABB 可以相乘,其乘积为一个 m×pm\times p 的矩阵 DD

$$D_{m\times p}=\begin{bmatrix} d_{1,1} & d_{1,2} & \cdots & d_{1,p}\\ d_{2,1} & d_{2,2} & \cdots & d_{2,p} \\ \vdots & \vdots & \ddots & \vdots\\ d_{m,1} & d_{m,2} & \cdots & d_{m,p}\end{bmatrix} $$

其中 di,j=k=1nai,k×bk,jd_{i,j}=\sum^n_{k=1} a_{i,k} \times b_{k,j},简记为 D=A×BD=A\times B

现已知三个矩阵 A,B,CA,B,C,这三个矩阵大多数元素为 00,我们把这种矩阵称为稀疏矩阵。因此,我们采用三元组 i,j,ai,j,a 来表示矩阵的第 ii 行第 jj 列的值为 aa 其余未列出的元素均为 00;在计算机中,我们仅给出非零元素的三元组,而且使用行优先法给出稀疏矩阵的三元组,首先是第一行按列给出,然后是第二行按列给出……

例如,矩阵:$\begin{bmatrix}1&0&0&0\\0&0&2&-1\\0&1&2&3\\0&0&0&0\end{bmatrix}$ 那么,矩阵的三元组表示为:

1 1 1
2 3 2
2 4 -1
3 2 1 
3 3 2
3 4 3

你的任务就是:计算矩阵 D=A×B×CD=A\times B\times C

输入格式

第一行为两个正整数 x,yx,y,分别表示输出结果所在的行和列。

第二行为四个整数 m,n,o,pm,n,o,p,表明 AAm×nm\times n 的矩阵,BBn×on\times o 的矩阵,CCo×po\times p 的矩阵。

第三行以后的每一行有三个整数分别是矩阵的三元组表示法中的一个元素的值,每个矩阵之间有一个空行。表示的顺序是矩阵 A,B,CA,B,C

输出格式

仅一个整数,为 DD 的第 xx 行第 yy 列的元素的值。

1 2                       
3 4 2 3
1 1 3
1 4 5
2 2 1
3 1 2

1 2 2
2 1 1
3 1 2
3 2 4

1 2 2
1 3 3
2 1 1
2 2 2

12

提示

数据规模与约定

对于全部的测试点,保证 1m,n,o,p6×1031\le m,n,o,p\le 6\times 10^3,三元数组的总个数不大于 6×1036\times 10^3。数据之间用空格分开。