我的代码开了o2后就MLE(难不成这代码是厌氧型),有哪位大佬能告诉我是这是为什么
#include<bits/stdc++.h>
using namespace std;
string n;
int k=0,l=1,fi[10];
bool zu[10][10];
vector<int>ans;
int gj(int a){
int x=0;
for(int i=0;i<l;i++){
ans[i]=ans[i]*a+x;
x=ans[i]/10;
ans[i]%=10;
}
while(x){
ans.push_back(x%10);
x/=10;
l++;
}
}
void floyd(){
for(int k=0;k<=9;k++){
for(int i=0;i<=9;i++){
for(int j=0;j<=9;j++){
zu[i][j]=(zu[i][k]&&zu[k][j])||zu[i][j];
}
}
}
}
void ParseIn(){
cin>>n>>k;
for(int i=0;i<k;i++){
int pi=0,qi=0;
cin>>pi>>qi;
zu[pi][qi]=true;
}
}
void Core(){
for(int i=0;i<=9;i++){
zu[i][i]=true;
}
floyd();
for(int i=0;i<=9;i++){
fi[i]=count(zu[i],zu[i]+10,1);
}
for(int i=0;i<n.size();i++){
gj(fi[n[i]-'0']);
}
}
void WriteOut(){
for(int i=l-1;i>=0;i--){
cout<<ans[i];
}
}
int main(){
//freopen("产生数.in","r",stdin);
//freopen("产生数.out","w",stdout);
ans.push_back(1);
ParseIn();
Core();
WriteOut();
return 0;
}