@[luohongbo](/user/610410) dfs函数递归没有出口,爆栈
by Asedwai_7 @ 2023-07-09 11:42:07
@[Asedwai_7](/user/728910) 他如果条件不符合循环完后不就会自动return吗?
by fenboQAQ @ 2023-07-09 11:51:06
@[luohongbo](/user/610410) (No sure
如果一直访问到 changdu[jilu[a][i]],或者说
> if(changdu[jilu[a][i]])
dfs(jilu[a][i]);
如果这里dfs中的jilu[a][i]=a,
by Asedwai_7 @ 2023-07-09 11:59:03
@[Asedwai_7](/user/728910) 改了一下,没有MLE了,但是WA了
```
#include <bits/stdc++.h>
using namespace std;
int r[105][105],lens[105];
bool vis[10005];
long long num = 0;
int ans[105];
void dfs(int a){
if(vis[a]) return;
for(int i = 1;i <= lens[a];i ++){
num ++;
if(lens[r[a][i]]){
vis[a] = 1;
dfs(r[a][i]);
vis[a] = 0;
}
}
}
void cheng(int yy){
int fw = 0;
for(int i = 30;i >= 1;i --){
ans[i] = ans[i] * yy + fw;
fw = ans[i] / 10;
ans[i] %= 10;
}
}
int main(){
ans[30] = 1;
string s;
int k;
cin >> s >> k;
for(int i = 1;i <= k;i ++){
int a,b;
cin >> a >> b;
r[a][++ lens[a]] = b;
}
for(int i = 0;i < s.size();i ++){
num = 1;
int c = s[i] - '0';
dfs(c);
cheng(num);
}
int len = 1;
while(ans[len] == 0){
len ++;
}
for(int i = len;i <= 30;i ++){
cout << ans[i];
}
return 0;
}
```
by fenboQAQ @ 2023-07-09 12:03:50