如果输入没有问题,那么就是其他语句的问题
by gztony @ 2021-01-20 08:02:10
```cpp
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<map>
using namespace std;
string ta[15],tb[15];
int n;
string a,b;
map<string,int>mp[3];
queue<string>q[3];
//queue<int>st[3];
int BFS(){
mp[1][a]=1;mp[2][b]=1;
q[1].push(a);q[2].push(b);
int i,j;
while(!q[1].empty() && !q[2].empty()){
int u;if(q[1].size()<=q[2].size())u=1;else u=2;
string s;
s=q[u].front();
if(u==1){
for(i=1;i<=n;i++){
int k=0;
while(s.find(ta[i],k)!=-1){
k=s.find(ta[i],k);
int len=ta[i].size();
s.replace(k,len,tb[i]);
if(mp[1][s]==0){
mp[1][s]=mp[1][q[u].front()]+1;
q[u].push(s);
}
if(mp[2][s]!=0){
int tmp=mp[2][s]+mp[1][q[u].front()]-1;
if(tmp<=10)return tmp;
}
k++;
s=q[u].front();
}
}
}
else{
for(i=1;i<=n;i++){
int k=0;
while(s.find(tb[i],k)!=-1){
k=s.find(tb[i],k);
int len=tb[i].size();
s.replace(k,len,ta[i]);
if(!mp[2][s]){
mp[2][s]=mp[2][q[u].front()]+1;
q[u].push(s);
}
if(mp[1][s]){
int tmp=mp[1][s]+mp[2][q[u].front()]-1;
if(tmp<=10)return tmp;
}
k++;
s=q[u].front();
}
}
}
q[u].pop();
}
return -1;
}
int main(){
cin>>a>>b;
int i,j;
while(cin>>ta[n+1]>>tb[n+1]) n++;
int ans=BFS();
if(ans==-1)printf("NO ANSWER!\n");
else cout<<ans<<endl;
return 0;
}
```
by _红_ @ 2021-02-15 19:03:05
这是代码
by _红_ @ 2021-02-15 19:03:28