标签:clu ota and asi images ati tar case reg
http://acm.hdu.edu.cn/showproblem.php?pid=5012
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 2352 Accepted Submission(s): 1178
1 #include<iostream> 2 #include<cstring> 3 #include<algorithm> 4 #include<cmath> 5 #include<string> 6 #include<cstdio> 7 #include<queue> 8 #include<map> 9 #include<vector> 10 typedef long long ll; 11 #define maxn 100005 12 using namespace std; 13 14 int a[15],b[15]; 15 map<int,int>mp; 16 struct sair{ 17 int num,step; 18 }; 19 20 sair Roll(sair tmp,int x){ 21 //左右前后 22 sair ans; 23 ans.num=0; 24 int aa[8]; 25 int xx=tmp.num; 26 for(int i=6;i>=1;i--){ 27 a[i]=xx%10; 28 xx/=10; 29 } 30 if(x==0){ 31 ans.num=ans.num*10+a[4]; 32 ans.num=ans.num*10+a[3]; 33 ans.num=ans.num*10+a[1]; 34 ans.num=ans.num*10+a[2]; 35 ans.num=ans.num*10+a[5]; 36 ans.num=ans.num*10+a[6]; 37 } 38 else if(x==1){ 39 ans.num=ans.num*10+a[3]; 40 ans.num=ans.num*10+a[4]; 41 ans.num=ans.num*10+a[2]; 42 ans.num=ans.num*10+a[1]; 43 ans.num=ans.num*10+a[5]; 44 ans.num=ans.num*10+a[6]; 45 } 46 else if(x==2){ 47 ans.num=ans.num*10+a[6]; 48 ans.num=ans.num*10+a[5]; 49 ans.num=ans.num*10+a[3]; 50 ans.num=ans.num*10+a[4]; 51 ans.num=ans.num*10+a[1]; 52 ans.num=ans.num*10+a[2]; 53 } 54 else{ 55 ans.num=ans.num*10+a[5]; 56 ans.num=ans.num*10+a[6]; 57 ans.num=ans.num*10+a[3]; 58 ans.num=ans.num*10+a[4]; 59 ans.num=ans.num*10+a[2]; 60 ans.num=ans.num*10+a[1]; 61 } 62 ans.step=tmp.step+1; 63 return ans; 64 } 65 66 void bfs(int S,int E){ 67 sair s,e; 68 if(S==E){ 69 cout<<0<<endl; 70 return; 71 } 72 s.num=S,s.step=0; 73 queue<sair>Q; 74 Q.push(s); 75 while(!Q.empty()){ 76 s=Q.front(); 77 Q.pop(); 78 for(int i=0;i<4;i++){ 79 e=Roll(s,i); 80 if(e.num==E){ 81 cout<<e.step<<endl; 82 return; 83 } 84 if(!mp[e.num]){ 85 Q.push(e); 86 mp[e.num]=1; 87 } 88 } 89 } 90 cout<<-1<<endl; 91 } 92 93 int main(){ 94 while(cin>>a[1]){ 95 mp.clear(); 96 for(int i=2;i<=6;i++) cin>>a[i]; 97 int S=0,E=0; 98 for(int i=1;i<=6;i++) E=E*10+a[i]; 99 for(int i=1;i<=6;i++) cin>>b[i]; 100 for(int i=1;i<=6;i++) S=S*10+b[i]; 101 bfs(S,E); 102 } 103 }
标签:clu ota and asi images ati tar case reg
原文地址:https://www.cnblogs.com/Fighting-sh/p/9943043.html