版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SSL_Yyx/article/details/82025760
题目描述
输入输出格式
输入格式:
第1行为:x y (第1行为两个正整数:x,y分别表示输出结果所在的行和列)
第2行为:m n o p(第2行给出的正整数表明A为m×n矩阵,B为n×o矩阵,C为o×p矩阵)
第3行为:i j a(第3行以后的每一行有三个整数分别是矩阵的三元组表示法中的一个元素的值,每个矩阵之间有一个空行。表示的顺序是矩阵A、B和C)
… … … … … …
注:1≤m,n,o,p≤6000,三元数组的总个数不大于6000。数据之间用空格分开。
输出格式:
为 的第x行第y列元素的值。
输入输出样例
输入样例#1:
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
输出样例#1:
12
程序
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int x,y,n,m,o,p;
int a[6005],b[6005];
int i,j,c,i1,j1,c1;
int main(){
cin>>x>>y;
cin>>n>>m>>o>>p;
cin>>i>>j>>c;
while (true){
if (i==x) a[j]=c;
i1=i; j1=j; c1=c;
cin>>i>>j>>c;
if (i<i1 || i==i1 && j<=j1) break;
}
while (true){
b[j]+=a[i]*c;
i1=i; j1=j; c1=c;
cin>>i>>j>>c;
if (i<i1 || i==i1 && j<=j1) break;
}
for (int k=1;k<=6005;k++){
a[k]=b[k];
b[k]=0;
}
while(true){
if (j==y) b[y]+=a[i]*c;
i1=i; j1=j;c1=c;
cin>>i>>j>>c;
if (i<i1 || i==i1 && j<=j1) break;
}
cout<<b[y]<<endl;
return 0;
}