答案如下:
#include<bits/stdc++.h>
using namespace std;
struct matrix
{
int a;
int b;
}m[26];
stack<matrix> s;
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
char hh;
cin>>hh;
int want=hh-'A';
cin>>m[want].a>>m[want].b;
}
string expr;
while(cin>>expr)
{
int an=0,ok=1;
for(int i=0;i<expr.length();i++)
{
if(isalpha(expr[i]))
s.push(m[expr[i]-'A']);
else if(expr[i]==')')
{
matrix m2=s.top(); s.pop();
matrix m1=s.top(); s.pop();
if(m1.b!=m2.a)
{
cout<<"error"<<endl;
ok=0;
break;
}
else
{
an+=(m1.a*m1.b*m2.b);
matrix m3;
m3.a=m1.a;
m3.b=m2.b;
s.push(m3);
}
}
}
if(ok)
cout<<an<<endl;
}
return 0;
}