题目传送门
死亡记录
#include<bits/stdc++.h>
using namespace std;
string a,b,ca[7],cb[7];
map<string,bool>f;
queue<string>q;
queue<int>ans;
int n=6;
int main()
{
cin>>a>>b;for (int i=1;i<=6;++i) cin>>ca[i]>>cb[i];
while (ca[n][0]=='\0') --n;
if (a==b)
{
cout<<0;return 0;
}
if (n==0)
{
cout<<"NO ANSWER";return 0;
}
q.push(a);
ans.push(0);
while (q.size()&&q.front()!=b&&ans.front()<=10)
{
string front=q.front();q.pop();
if (f[front])
{
ans.pop();continue;
}
f[front]=1;
for (int i=1;i<=n;++i)
{
while (1)
{
int m=front.find(ca[i]);
if (m==-1) break;
string ss;ss=front;
ss.replace(m,ca[i].size(),cb[i]);
q.push(ss);
ans.push(ans.front()+1);
front[m]='^';
cout<<front<<endl;
}
}
ans.pop();
}
if (ans.front()>10)
{
cout<<"NO ANSWER";return 0;
}
cout<<ans.front();
return 0;
}```cpp