cdoevs 1226 倒水问题

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold
 
题目描述 Description

有两个无刻度标志的水壶,分别可装 x 升和 y 升 ( x,y 为整数且均不大于 100 )的水。设另有一水 缸,可用来向水壶灌水或接从水壶中倒出的水, 两水壶间,水也可以相互倾倒。已知 x 升壶为空 壶, y 升壶为空壶。问如何通过倒水或灌水操作, 用最少步数能在x或y升的壶中量出 z ( z ≤ 100 )升的水 来。

输入描述 Input Description

一行,三个数据,分别表示 x,y 和 z;

输出描述 Output Description

一行,输出最小步数 ,如果无法达到目标,则输出"impossible"

样例输入 Sample Input

3 22 1

样例输出 Sample Output

14

 /*注意是两个瓶子在一起才能表示一种状态,考虑好两个瓶子之间倒水的八种情况://向大壶倒满水
//向小壶倒满水
//大壶的水不要
//小壶的水不要
//大壶向小壶倒满水
//大壶向小壶倒水 ,倒不满
//小壶向大壶倒全部水,大壶没满
//小壶向大壶倒水,大壶满了
*/
#define N 120
#include<iostream>
using namespace std;
#include<cstdio>
bool visit[N][N];
#include<queue>
int x,y,z;
struct node{
int big,smal,sum;
};
int bfs(int &ans)
{
visit[][]=true;
queue<node>que;
que.push(node{,,});
while(!que.empty())
{
node now=que.front();
que.pop();
int a=now.big,b=now.smal,dep=now.sum;
if(a==z||b==z)
{
ans=dep;
return ;
}
if(!visit[x][b])
{
visit[x][b]=true;
que.push(node{x,b,dep+});
}
if(!visit[a][y])
{
visit[a][y]=true;
que.push(node{a,y,dep+});
}
if(!visit[][b])
{
visit[][b]=true;
que.push(node{,b,dep+});
}
if(!visit[a][])
{
visit[a][]=true;
que.push(node{a,,dep+});
}
if(a>=(y-b)&&!visit[a-(y-b)][y])
{
visit[a-(y-b)][y]=true;
que.push(node{a-(y-b),y,dep+});
}
if(a<y-b&&!visit[][a+b])
{
visit[][a+b]=true;
que.push(node{,a+b,dep+});
}if(b>=(x-a)&&!visit[x][b-(x-a)])
{
visit[x][b-(x-a)]=true;
que.push(node{x,b-(x-a),dep+});
}if(b<(x-a)&&!visit[a+b][])
{
visit[a+b][]=true;
que.push(node{a+b,,dep+});
}
}
}
int main()
{
int ans=;
scanf("%d%d%d",&x,&y,&z);
if(x<y) swap(x,y);
bfs(ans);
if(ans) printf("%d\n",ans);
else printf("impossible\n");
return ;
}

广度优先搜索 cdoevs 1226 倒水问题的更多相关文章

  1. 三个水杯——java,广度优先搜索

    题目如下: 21-三个水杯 内存限制:64MB 时间限制:1000ms 特判: No通过数:51 提交数:137 难度:4 题目描述: 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个 ...

  2. CodeVS 1226 倒水问题【DFS/BFS】

    题目描述 Description 有两个无刻度标志的水壶,分别可装 x 升和 y 升 ( x,y 为整数且均不大于 100 )的水.设另有一水 缸,可用来向水壶灌水或接从水壶中倒出的水, 两水壶间,水 ...

  3. 图的广度优先搜索(BFS)

    把以前写过的图的广度优先搜索分享给大家(C语言版) #include<stdio.h> #include<stdlib.h> #define MAX_VERTEX_NUM 20 ...

  4. 广度优先搜索(BFS)

    定义 维基百科:https://en.wikipedia.org/wiki/Breadth-first_search 给定图G=(V,E)和一个可识别的源结点s,广度优先搜索对图G中的边进行系统性的探 ...

  5. 总结A*,Dijkstra,广度优先搜索,深度优先搜索的复杂度比较

    广度优先搜索(BFS) 1.将头结点放入队列Q中 2.while Q!=空 u出队 遍历u的邻接表中的每个节点v 将v插入队列中 当使用无向图的邻接表时,复杂度为O(V^2) 当使用有向图的邻接表时, ...

  6. ACM题目————图的广度优先搜索

    题目描述 图的广度优先搜索类似于树的按层次遍历,即从某个结点开始,先访问该结点,然后访问该结点的所有邻接点,再依次访问各邻接 点的邻接点.如此进行下去,直到所有的结点都访问为止.在该题中,假定所有的结 ...

  7. SDUT 2141 【TEST】数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历

    数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem ...

  8. HDU 1312 Red and Black DFS(深度优先搜索) 和 BFS(广度优先搜索)

    Red and Black Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

  9. HDU 1241 Oil Deposits DFS(深度优先搜索) 和 BFS(广度优先搜索)

    Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

随机推荐

  1. Discuz!X3解读之类引入机制及目录结构

    实例: - /source/class/table/table_forum_faq.php - /source/class/model/model_forum_post.php - /source/p ...

  2. STL---Codeforces675D Tree Construction(二叉树节点的父亲节点)

    Description During the programming classes Vasya was assigned a difficult problem. However, he doesn ...

  3. CSS 最核心的四个概念(摘录)

    本文将讲述 CSS 中最核心的几个概念,包括:盒模型.position.float等.这些是 CSS 的基础,也是最常用的几个属性,它们之间看似独立却又相辅相成.为了掌握它们,有必要写出来探讨一下,如 ...

  4. [moka同学笔记]yii2 activeForm 表单样式的修改

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAv4AAANcCAIAAACopDy/AAAgAElEQVR4nOzdfXAb52H4ef1veSatRV

  5. PHP json编码遇到的问题

    今天遇到了json编码解码之后中文消失的问题,一探究竟,写下这篇文章 PHP中提供了json_encode  和json_decode 这对函数 将PHP中 值转化成 字符串,但是遇到中文的时候,很容 ...

  6. .NET Core Roadmap

    This post was written by Scott Hunter. It has been about two weeks since we shipped .NET Core / ASP. ...

  7. PEM (Privacy Enhanced Mail) Encoding

    PEM (Privacy Enhanced Mail) Encoding The moPEM (Privacy Enhanced Mail) Encoding The most commonly us ...

  8. Eclipse环境下使用Maven注意事项

    在最新版本的Eclipse Java EE IDE for Web Developers中已经包含Maven 2 在File,New中可以看到Maven Project,新建, 按照步骤一路下来,要求 ...

  9. ABAP程序系统字段中英文详解

    SY-SUBRC: 系统执行某指令后,表示执行成功与否的变量,’0’ 表示成功SY-DBLNT: 被处理过的记录的笔数 SY-UNAME: 当前使用者登入SAP的USERNAME;SY-DATUM: ...

  10. Struts2原理

    Struts 2以WebWork优秀的设计思想为核心,吸收了Struts 1的部分优点,建立了一个兼容WebWork和Struts 1的MVC框架,Struts 2的目标是希望可以让原来使用Strut ...