标签:des style blog http color io os ar for
http://acm.hdu.edu.cn/showproblem.php?pid=5012
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <queue> using namespace std; int v[7][7][7][7][7][7]; struct node { int ff[7]; int ans; }; struct node t,f; int a[7],b[7]; int bfs() { queue<node>q; for(int i=1; i<=6; i++) t.ff[i]=a[i]; t.ans=0; q.push(t); v[t.ff[1]][t.ff[2]][t.ff[3]][t.ff[4]][t.ff[5]][t.ff[6]]=1; while(!q.empty()) { t=q.front(); q.pop(); if(t.ff[1]==b[1]&&t.ff[2]==b[2]&&t.ff[3]==b[3]&&t.ff[4]==b[4]&&t.ff[5]==b[5]&&t.ff[6]==b[6]) { printf("%d\n",t.ans); return 1; } for(int i=1; i<=4; i++) { if(i==1) { f.ff[1]=t.ff[4]; f.ff[2]=t.ff[3]; f.ff[3]=t.ff[1]; f.ff[4]=t.ff[2]; f.ff[5]=t.ff[5]; f.ff[6]=t.ff[6]; if(v[f.ff[1]][f.ff[2]][f.ff[3]][f.ff[4]][f.ff[5]][f.ff[6]]==0) { f.ans=t.ans+1; v[f.ff[1]][f.ff[2]][f.ff[3]][f.ff[4]][f.ff[5]][f.ff[6]]=1; q.push(f); } } else if(i==2) { f.ff[1]=t.ff[3]; f.ff[2]=t.ff[4]; f.ff[3]=t.ff[2]; f.ff[4]=t.ff[1]; f.ff[5]=t.ff[5]; f.ff[6]=t.ff[6]; if(v[f.ff[1]][f.ff[2]][f.ff[3]][f.ff[4]][f.ff[5]][f.ff[6]]==0) { f.ans=t.ans+1; v[f.ff[1]][f.ff[2]][f.ff[3]][f.ff[4]][f.ff[5]][f.ff[6]]=1; q.push(f); } } else if(i==3) { f.ff[1]=t.ff[6]; f.ff[2]=t.ff[5]; f.ff[3]=t.ff[3]; f.ff[4]=t.ff[4]; f.ff[5]=t.ff[1]; f.ff[6]=t.ff[2]; if(v[f.ff[1]][f.ff[2]][f.ff[3]][f.ff[4]][f.ff[5]][f.ff[6]]==0) { f.ans=t.ans+1; v[f.ff[1]][f.ff[2]][f.ff[3]][f.ff[4]][f.ff[5]][f.ff[6]]=1; q.push(f); } } else if(i==4) { f.ff[1]=t.ff[5]; f.ff[2]=t.ff[6]; f.ff[3]=t.ff[3]; f.ff[4]=t.ff[4]; f.ff[5]=t.ff[2]; f.ff[6]=t.ff[1]; if(v[f.ff[1]][f.ff[2]][f.ff[3]][f.ff[4]][f.ff[5]][f.ff[6]]==0) { f.ans=t.ans+1; v[f.ff[1]][f.ff[2]][f.ff[3]][f.ff[4]][f.ff[5]][f.ff[6]]=1; q.push(f); } } } } return 0; } int main() { int F; while(scanf("%d%d%d%d%d%d",&a[1],&a[2],&a[3],&a[4],&a[5],&a[6])!=EOF) { for(int i=1; i<=6; i++) scanf("%d",&b[i]); memset(v,0,sizeof(v)); F=bfs(); if(F==0) printf("-1\n"); } return 0; }
标签:des style blog http color io os ar for
原文地址:http://www.cnblogs.com/zhangmingcheng/p/3971406.html