1 solutions
-
0
#include<bits/stdc++.h> using namespace std; string s="01234567",a; map<string,bool>m; int main(){ for(int i=0;i<8;i++){ int n;cin>>n; a+='0'+(n-1); } queue<pair<string,string>>q; q.push({s,""}); while(!q.empty()){ pair<string,string>b=q.front();q.pop(); if(b.first==a){ cout<<b.second.length()<<'\n'<<b.second; return 0; } string t1=b.first,t2=b.first,t3=b.first; for(int i=0;i<8;i++)t1[i]=b.first[7-i]; if(!m[t1])q.push({t1,b.second+'A'}),m[t1]=1; t2[0]=b.first[3]; for(int i=1;i<4;i++)t2[i]=b.first[i-1]; for(int i=4;i<7;i++)t2[i]=b.first[i+1]; t2[7]=b.first[4]; if(!m[t2])q.push({t2,b.second+'B'}),m[t2]=1; swap(t3[1],t3[2]);swap(t3[1],t3[5]);swap(t3[1],t3[6]); if(!m[t3])q.push({t3,b.second+'C'}),m[t3]=1; } return 0; }
- 1
Information
- ID
- 29
- Time
- 1000ms
- Memory
- 512MiB
- Difficulty
- 5
- Tags
- # Submissions
- 26
- Accepted
- 13
- Uploaded By