HDU5012:Dice(bfs模板)
http://acm.hdu.edu.cn/showproblem.php?pid=5012
At the beginning, the two dices may face different(which means there exist some i, ai ≠ bi). Ddy wants to make the two dices look the same from all directions(which means for all i, ai = bi) only by the following four rotation operations.(Please read the picture for more information)

Now Ddy wants to calculate the minimal steps that he has to take to achieve his goal.
For each case, the first line consists of six integers a1,a2,a3,a4,a5,a6, representing the numbers on dice A.
The second line consists of six integers b1,b2,b3,b4,b5,b6, representing the numbers on dice B.
answer. If there’s no way to make two dices exactly the same, output -1.
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <queue>
using namespace std;
int v[][][][][][];
struct node
{
int ff[];
int ans;
};
struct node t,f;
int a[],b[];
int bfs()
{
queue<node>q;
for(int i=; i<=; i++)
t.ff[i]=a[i];
t.ans=;
q.push(t);
v[t.ff[]][t.ff[]][t.ff[]][t.ff[]][t.ff[]][t.ff[]]=;
while(!q.empty())
{
t=q.front();
q.pop();
if(t.ff[]==b[]&&t.ff[]==b[]&&t.ff[]==b[]&&t.ff[]==b[]&&t.ff[]==b[]&&t.ff[]==b[])
{
printf("%d\n",t.ans);
return ;
}
for(int i=; i<=; i++)
{
if(i==)
{
f.ff[]=t.ff[];
f.ff[]=t.ff[];
f.ff[]=t.ff[];
f.ff[]=t.ff[];
f.ff[]=t.ff[];
f.ff[]=t.ff[];
if(v[f.ff[]][f.ff[]][f.ff[]][f.ff[]][f.ff[]][f.ff[]]==)
{
f.ans=t.ans+;
v[f.ff[]][f.ff[]][f.ff[]][f.ff[]][f.ff[]][f.ff[]]=;
q.push(f);
}
}
else if(i==)
{
f.ff[]=t.ff[];
f.ff[]=t.ff[];
f.ff[]=t.ff[];
f.ff[]=t.ff[];
f.ff[]=t.ff[];
f.ff[]=t.ff[];
if(v[f.ff[]][f.ff[]][f.ff[]][f.ff[]][f.ff[]][f.ff[]]==)
{
f.ans=t.ans+;
v[f.ff[]][f.ff[]][f.ff[]][f.ff[]][f.ff[]][f.ff[]]=;
q.push(f);
}
}
else if(i==)
{
f.ff[]=t.ff[];
f.ff[]=t.ff[];
f.ff[]=t.ff[];
f.ff[]=t.ff[];
f.ff[]=t.ff[];
f.ff[]=t.ff[];
if(v[f.ff[]][f.ff[]][f.ff[]][f.ff[]][f.ff[]][f.ff[]]==)
{
f.ans=t.ans+;
v[f.ff[]][f.ff[]][f.ff[]][f.ff[]][f.ff[]][f.ff[]]=;
q.push(f);
}
}
else if(i==)
{
f.ff[]=t.ff[];
f.ff[]=t.ff[];
f.ff[]=t.ff[];
f.ff[]=t.ff[];
f.ff[]=t.ff[];
f.ff[]=t.ff[];
if(v[f.ff[]][f.ff[]][f.ff[]][f.ff[]][f.ff[]][f.ff[]]==)
{
f.ans=t.ans+;
v[f.ff[]][f.ff[]][f.ff[]][f.ff[]][f.ff[]][f.ff[]]=;
q.push(f);
}
}
}
}
return ;
}
int main()
{
int F;
while(scanf("%d%d%d%d%d%d",&a[],&a[],&a[],&a[],&a[],&a[])!=EOF)
{
for(int i=; i<=; i++)
scanf("%d",&b[i]);
memset(v,,sizeof(v));
F=bfs();
if(F==) printf("-1\n");
}
return ;
}
HDU5012:Dice(bfs模板)的更多相关文章
- 2014 网选 5012 Dice(bfs模板)
/* 题意:就是给定两个筛子,每个筛子上6个面,每个面的数字属于[1,6], 且互不相同! 问a筛子最少经过按照题目规定的要求转动,达到和b筛子上下左右前后的数字相同! 思路:很直白的bfs,将每一种 ...
- POJ-2251 Dungeon Master (BFS模板题)
You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of un ...
- BFS (1)算法模板 看是否需要分层 (2)拓扑排序——检测编译时的循环依赖 制定有依赖关系的任务的执行顺序 djkstra无非是将bfs模板中的deque修改为heapq
BFS模板,记住这5个: (1)针对树的BFS 1.1 无需分层遍历 from collections import deque def levelOrderTree(root): if not ro ...
- PAT1076. Forwards on Weibo(标准bfs模板)
//标准的层次遍历模板 //居然因为一个j写成了i,debug半天.....解题前一定要把结构和逻辑想清楚,不能着急动手,理解清楚题意,把处理流程理清楚再动手,恍恍惚惚的写出来自己慢慢debug吧 # ...
- BFS 模板
转自:欣哥 下面是bfs一般的形式,谈不上模板但一般都这么来做有点乱有什么多交流 bfs一般用于求最短时间 #include<stdio.h>#include<queue>us ...
- 图的遍历——DFS和BFS模板(一般的图)
关于图的遍历,通常有深度优先搜索(DFS)和广度优先搜索(BFS),本文结合一般的图结构(邻接矩阵和邻接表),给出两种遍历算法的模板 1.深度优先搜索(DFS) #include<iostrea ...
- POJ:Dungeon Master(三维bfs模板题)
Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16748 Accepted: 6522 D ...
- hdu1242 又又又是逃离迷宫(bfs模板题)
题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1242/ 这次的迷宫是有守卫的,杀死一个守卫需要花费1个单位的时间,所以以走的步数为深度,在每一层进行搜索,由于走 ...
- HRBUST 1181 移动 bfs模板
#include<bits/stdc++.h>///该头文件为万能头文件,有些学校oj不能使用,读者可根据需要自行修改 using namespace std; ; int vis[MAX ...
随机推荐
- ldap 测试表设计
1. ldap_oc_mappings 存储objeckClass 信息 表结构: Column Desc. id objectClass的唯一标识 name objectClass的名称 k ...
- 游戏服务器学习笔记 5———— twisted Perspective Broker 透明代理
实际上这章压根不需要我来说,twisted官网的Doc里面有专门介绍的章节.写的非常详细. http://twistedmatrix.com/documents/current/core/howto/ ...
- 【大数据系列】hive修改默认的derby数据库
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml- ...
- linux下压缩和解压
.tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————————.gz解压1:gun ...
- ftp主动与被动模式详解
FTP是仅基于TCP的服务,不支持UDP.与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口).通常来说这两个端口是21(命令端口)和20(数据端口).但FTP工作方式的不同 ...
- java中调用操作系统的命令
java.lang.Runtime类提供了exec() 方法来执行操作系统的命令. 使用静态的Runtime.getRuntime()方法可以获得当前的java应用程序对应的Runtime类的实例 R ...
- 关于kvm虚拟机的克隆方法总结
kvm虚拟机的克隆分为两种情况,第一种kvm宿主机上对虚拟机直接克隆 第二种通过复制配置文件与磁盘文件的虚拟机复制克隆(适用于异机的静态迁移). 现笔者将分别两种kvm虚拟机克隆的的详细操作过程都记录 ...
- CSS 盒子模型 二
Sublime 快捷键: 文件保存后,输入 html:xt + tab ,补全html html:xt <!DOCTYPE html PUBLIC "-//W3C//DTD XHTM ...
- humid vs wet vs moist
想表达天气很潮湿该用哪个词呢? 跟一个美国人聊天,我说wet他没听清,然后我说moist,然后他反应过来了:"oh,humid" 那~还是用humid吧
- Git - 忽略Xcode工程中UserInterfaceState.xcuserstate文件的问题
一.在同 .Git目录下创建.gitignore文件.在文件中加入如下内容: *.xcuserstate project.xcworkspace xcuserdata UserInterfaceSta ...