1 solutions

  • 0
    @ 2024-12-28 15:43:41
    #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