您的vector没有赋初始空间,导致报错。
我修改后的版本:[AC记录](https://www.luogu.com.cn/record/147739923)
`````cpp
#include<bits/stdc++.h>
using namespace std;
int w[20],e[20];
int vis[65];
string s1;
int k;
vector<int> ans;
int cnt;
void dfs(int x){
cnt++;
vis[x]=1;
for(int i=1;i<=k;i++){
if(x==w[i]&&!vis[e[i]]){
dfs(e[i]);
}
}
return;
}
vector<int> mul(vector<int>a,int b){
vector<int> c;
long long t=0;
for(int i=0;i<a.size();i++){
t+=a[i]*b;
c.push_back(t%10);
t/=10;
}
while(t){
c.push_back(t%10);
t/=10;
}
while(c.size()>1&&c.back()==0) c.pop_back();
return c;
}
int main(){
ans.resize(100);//我加的
cin>>s1>>k;
for(int i=1;i<=k;i++){
cin>>w[i]>>e[i];
}
ans[0]=1;
for(int i=0;i<s1.size();i++){
dfs(s1[i]-'0');
ans=mul(ans,cnt);
cnt=0;
memset(vis,0,sizeof(vis));
}
for(int i=ans.size()-1;i>=0;i--)cout<<ans[i];
return 0;
}
by NaraFluorine @ 2024-02-20 22:18:13
@[NaraFluorine](/user/375144) 过了,谢谢dalao
by __Kazuha__ @ 2024-02-21 08:27:53
啊我错了,不是空间的问题,是ans初始没东西导致乘法全部无效,我塞了一个1就没事了(惭愧)
by NaraFluorine @ 2024-03-21 09:31:48