5个点都输出的NO ANSWER!。找不出错误在哪
#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#include<queue>
using namespace std;
const int INF=0x3f3f3f3f;
string A,B;
string r1[8],r2[8];
queue<string> q;//广搜队列
map<string,int> M;
int main(){
cin>>A>>B;
int n;
for(n=1;cin>>r1[n]>>r2[n];++n); --n;
q.push(A);
M[A]=0;
if(A==B){
printf("0");
return 0;
}
while(!q.empty()){
string u=q.front();
q.pop();
for(int i=1;i<=n;i++){//枚举变换规则
for(int j=0;j<u.length();j++){//枚举目标子串的起点
if(u.substr(j,r1[n].size()) == r1[n]){//找到子串
string v=u.substr(0,j)+r2[n]+u.substr(j+r2[n].size(),INF);
if(!M.count(v)){//如果v没有出现过
M[v]=M[u]+1;
if(v==B){
printf("%d",M[v]);
return 0;
}
if(M[v]<10){
q.push(v);
}
}
}
}
}
}
printf("NO ANSWER!");
return 0;
}