80pts WA #5 广搜求调
查看原帖
80pts WA #5 广搜求调
525549
gugusbx楼主2023/8/15 17:09
#include <bits/stdc++.h>
using namespace std;
const int maxn = 10;
string A, B, ra[maxn], rb[maxn];
int cnt, len;
struct node{
	string s;
	int ans;
};
map<string, int> vis;
void bfs(){
	queue<node> q;
	q.push({A, 0});
	vis[A] = 1;
	while(q.size()){
		node now = q.front();
		q.pop();
		if(now.ans > 10) {
			puts("NO ANSWER!");
			return ;
		}
		if(now.s == B){
			cout << now.ans;
			return ;
		}
		for(int i = 1; i <= len; ++i){
			string tmp = now.s;
			while(1){
				int x = tmp.find(ra[i]);
				if(x == -1) break;
				string t = tmp.replace(x, ra[i].size(), rb[i]);
				if(!vis[t]){
					q.push({t, now.ans + 1});
					vis[t] = 1;
				}
				tmp[x] = ' ';
			}
		}
	}
	puts("NO ANSWER!");
}
int main() {
	cin >> A >> B;
	string a, b;
	while(cin >> a >> b) {ra[++len] = a, rb[len] = b;}//strange……or bug 
	bfs();
	return 0;
}

#5

abaaaba abcdaba
a b
b d
d e
e f
f g
g c

ans:

8

out:

NO ANSWER!

感谢

2023/8/15 17:09
加载中...