40分求调
查看原帖
40分求调
330418
huang_ak_IOI楼主2022/5/9 19:39
#include<bits/stdc++.h>
using namespace std;
string a,b;
string ta[10],tb[10];
struct node{
	string s;
	int cnt;
}q[2000005];
int main(){
    //freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	cin>>a>>b;
	int n=1;
	while(cin>>ta[n]>>tb[n++]){}
	n--;
	int l=0,r=1;
    q[r].s=a;
    q[r].cnt=0;
	while(r>l){
		l++;
		if(q[l].cnt>10){
			cout<<"NO ANSWER!";
			return 0;
		}
		for(int j=1;j<=n;j++){
			int i=q[l].s.find(ta[j],0);
			while(1){
                if(i==-1) break;
                else{
                    r++;
                    q[r].s=q[l].s;
                    q[r].cnt=q[l].cnt+1;
                    q[r].s.replace(i,ta[j].size(),tb[j]);
                    if(q[r].s==b){
                        cout<<q[r].cnt;
                        return 0;
                    }
                    i=q[l].s.find(ta[j],i+1);
                }
            }
		}
	} 
	return 0;
}


2022/5/9 19:39
加载中...