/* Name: HDU--1195--Open the Lock Author: shen_渊 Date: 17/04/17 08:54 Description: bfs,用四维数组标记状态,每位数字可以做三种操作 +1,-1,交换 可以不用优先队列,题意决定,优先队列更费时间*/#include<iostream>#include<queue>#include<cstring>using namespace std;struct node{ int steps; string s; node():steps(){ }; bool operator <(const node &a)const{ return steps>a.steps; }};int bfs();][][][];string str1,str2;int main(){ ios::sync_with_stdio(false);// freopen("in.txt","r",stdin); int n;cin>>n; while(n--){ memset(vis,,sizeof(vis)); cin>>str1>>str2; if(str1 == str2)cout<<"0\n"; else cout<<bfs()<<endl; } ;}int bfs(){ priority_queue<node> q; node p; p.s = str1; q.push(p); vis[p.s[]-]-]-]-; while(!q.empty()){ node a,temp; temp = q.top();q.pop(); if(temp.s == str2)return temp.steps; ; i<; ++i) { //+1 a.s = temp.s; '; ; ]-]-]-]-']){ a.steps = temp.steps + ; q.push(a); vis[a.s[]-]-]-]-; } //-1 a.s = temp.s; '; ; ]-]-]-]-']){ a.steps = temp.steps + ; q.push(a); vis[a.s[]-]-]-]-; } //交换 ){ a.s = temp.s; a.s[i] = temp.s[i+]; a.s[i+] = temp.s[i]; ]-]-]-]-']){ a.steps = temp.steps + ; q.push(a); vis[a.s[]-]-]-]-; } } } } ;}