三个水杯 (bfs)
Input
接下来每组测试数据有两行,第一行给出三个整数V1 V2 V3 (V1>V2>V3 V1<100 V3>0)表示三个水杯的体积。
第二行给出三个整数E1 E2 E3 (体积小于等于相应水杯体积)表示我们需要的最终状态
Output
Sample Input
- 2
- 6 3 1
- 4 1 1
- 9 3 2
- 7 1 1
Sample Output
- 3
- -1
- #include <vector>
- #include <map>
- #include <set>
- #include <algorithm>
- #include <iostream>
- #include <cstdio>
- #include <cmath>
- #include <cstdlib>
- #include <string>
- #include <cstring>
- #include <queue>
- using namespace std;
- int s1,s2,s3;
- bool vis[][][];
- struct node
- {
- int a,b,c;
- int bu;
- }x,y;
- int bfs()
- {
- queue<node> q;
- while(!q.empty())
- q.pop();
- q.push(x);
- while(!q.empty()){
- node r=q.front();
- q.pop();
- vis[r.a][r.b][r.c]=true;
- if(r.a==y.a&&r.b==y.b&&r.c==y.c) return r.bu;
- if(<r.a && r.b<s2){
- node t=r;
- int tt=min(t.a,s2-t.b);
- t.a-=tt;
- t.b+=tt;
- if(vis[t.a][t.b][t.c]==false){
- vis[t.a][t.b][t.c]=true;
- t.bu++;
- q.push(t);
- }
- }
- if(<r.a && r.c<s3){
- node t=r;
- int tt=min(t.a,s3-t.c);
- t.a-=tt;
- t.c+=tt;
- if(vis[t.a][t.b][t.c]==false){
- vis[t.a][t.b][t.c]=true;
- t.bu++;
- q.push(t);
- }
- }
- if(<r.b && r.a<s1){
- node t=r;
- int tt=min(t.b,s1-t.a);
- t.b-=tt;
- t.a+=tt;
- if(vis[t.a][t.b][t.c]==false){
- vis[t.a][t.b][t.c]=true;
- t.bu++;
- q.push(t);
- }
- }
- if(<r.b && r.c<s3){
- node t=r;
- int tt=min(t.b,s3-t.c);
- t.b-=tt;
- t.c+=tt;
- if(vis[t.a][t.b][t.c]==false){
- vis[t.a][t.b][t.c]=true;
- t.bu++;
- q.push(t);
- }
- }
- if(<r.c && r.a<s1){
- node t=r;
- int tt=min(t.c,s1-t.a);
- t.c-=tt;
- t.a+=tt;
- if(vis[t.a][t.b][t.c]==false){
- vis[t.a][t.b][t.c]=true;
- t.bu++;
- q.push(t);
- }
- }
- if(<r.c && r.b<s2){
- node t=r;
- int tt=min(t.c,s2-t.b);
- t.c-=tt;
- t.b+=tt;
- if(vis[t.a][t.b][t.c]==false){
- vis[t.a][t.b][t.c]=true;
- t.bu++;
- q.push(t);
- }
- }
- }
- return -;
- }
- int main()
- {
- int n;
- scanf("%d",&n);
- while(n--){
- memset(vis,false,sizeof(vis));
- scanf("%d %d %d",&s1,&s2,&s3);
- x.a=s1,x.b=,x.c=,x.bu=;
- scanf("%d %d %d",&y.a,&y.b,&y.c);
- if(s1<y.a+y.b+y.c){
- printf("-1\n");
- continue;
- }
- else{
- printf("%d\n",bfs());
- }
- }
- }
三个水杯 (bfs)的更多相关文章
- nyoj三个水杯(bfs)
三个水杯 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子.三个水杯之间相互 ...
- nyoj 21三个水杯(BFS + 栈)
题目链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=21 思想: 看了一下搜索就来写了这题(BFS 找出最短路径 所以用此来进行搜索) 这题在 ...
- NYOJ 21.三个水杯-初始态到目标态的最少次数-经典BFS
题目传送门:biubiubiu~ 三个水杯 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子. ...
- NYOJ #21 三个水杯(bfs)
描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子.三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算.现在要求你写出一个程序,使其输出使初始状态到达目标 ...
- 三个水杯(BFS)
三个水杯 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 给出三个水杯.大小不一,而且仅仅有最大的水杯的水是装满的,其余两个为空杯子. 三个水杯之间相互倒水,而且水杯 ...
- NYOJ 21 三个水杯
三个水杯 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子.三个水杯之间相互倒水,并且水杯没有 ...
- 三个水杯——java,广度优先搜索
题目如下: 21-三个水杯 内存限制:64MB 时间限制:1000ms 特判: No通过数:51 提交数:137 难度:4 题目描述: 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个 ...
- nyoj 三个水杯
三个水杯 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子.三个水杯之间相互倒水,并且水杯没有标识,只 ...
- 26-三个水杯(bfs)
三个水杯 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子.三个水杯之间相互倒水,并且水杯没有 ...
随机推荐
- [原创] linux 下上传 datapoint数据到yeelink 【golang版本】
package main /* Create by sndnvaps<sndnvaps@gmail.com> * date : 2015-04-05 * upload datapoint ...
- Android SwipeRefreshLayout 官方下拉刷新控件介绍
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24521483 下面App基本都有下拉刷新的功能,以前基本都使用XListView ...
- PV操作——生产者和消费者
首先,先来看几个概念: 同步:协作的过程,比如,多人开发合作. 相互排斥:争抢资源的过程.比如苦逼的大学选课: 临界区:进程中对临界资源实施操作的那段程序: 临界资源:一次仅仅能一个进程使用的资源,比 ...
- CKEditor上传插件
CKEditor上传插件 前言 CKEditor上传插件是不是免费的,与您分享在此开发.这个插件是基于ASP.NET MVC下开发的,假设是webform的用户或者其他语言的用户.能够參考把serve ...
- [视频解说]0基础课程-运营商-Java它J2se
本节解说 运营商应用 Java 算被分成: 算术运算符 颂值运营商 逻辑运算符 位运算符 元运算符 这里录制了 视频解说这几大类运算符,并有练习题提供大家 面试题: 1. 最有效率的方式算出2乘以8等 ...
- 02、Unicode 汉子转码小工具
原文:02.Unicode 汉子转码小工具 在做 Windows app 的时候,与服务器端交互使用的是 json 格式的数据,里面的汉字内容被 编码成 unicode 格式,在调试的时候不太方便,就 ...
- IIS7构造Gzip压缩
IIS7构造Gzip压缩 本文来自Kevin Yang博客 作者:Kevin Yang 开启配置HTTP压缩(GZip) 在IIS7中配置Gzip压缩相比IIS6来说实在easy了很多.并且默认情况下 ...
- Alamofire网络库进阶教程
本章节由CocoaChina翻译组成员星夜暮晨(博客)翻译自raywenderlich:Intermediate Alamofire Tutorial,敬请勘误. 欢迎回到我们的 Alamofire ...
- 无显示仍然发挥树莓派——VNCserver设定
谁说没有显示器就不能玩树莓派的图形界面了.不要忘了VNCserver哦! VNC(Virtual Network Computing)属于一种网络显示系统,也就是说它能将完整的窗体界面通过网络传输到还 ...
- Attribute(两)——定义自己的特色+Asp.net MVC中间filter详细解释
部分博客是预先定义的有关特性的一些基本特征,同时还Attribute这一概念的一个宏观上的认识,在上篇博客结尾介绍了有关为自己定义特性服务的AttributeUsage,这篇博客主要是通过filter ...