题解 P2222 【[HNOI2001]矩阵乘积】

· · 题解

#include<set>
#include<map>
#include<cmath>
#include<ctime>
#include<queue>
#include<stack>
#include<cstdio>
#include<string>
#include<vector>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define LL long long
#define RE register
#define IL inline
using namespace std;
const int N=6000;
int x,y,n,m,o,p;
int a[N+5],b[N+5];
int i,j,c,li,lj,lc;
int main()
{
    scanf("%d%d%d%d%d%d",&x,&y,&n,&m,&o,&p);
    scanf("%d%d%d",&i,&j,&c);
    while (true)
    {
        if (i==x) a[j]=c;
        li=i,lj=j,lc=c;
        scanf("%d%d%d",&i,&j,&c);
        if (i<li||i==li&&j<=lj) break;
    }
    while (true)
    {
        b[j]+=a[i]*c;
        li=i,lj=j,lc=c;
        scanf("%d%d%d",&i,&j,&c);
        if (i<li||i==li&&j<=lj) break;
    }
    memcpy(a,b,sizeof(a));
    memset(b,0,sizeof(b));
    while(true)
    {
        if (j==y) b[y]+=a[i]*c;
        li=i,lj=j,lc=c;
        scanf("%d%d%d",&i,&j,&c);
        if (i<li||i==li&&j<=lj) break;
    }
    printf("%d\n",b[y]);
    return 0;
}