HDU1459 非常可乐(BFS) 2016-07-24 15:00 165人阅读 评论(0) 收藏
非常可乐
Problem Description
Input
Output
Sample Input
7 4 3
4 1 3
0 0 0
Sample Output
NO
3
_________________________________________________________________
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<queue>
using namespace std; int vir[105][105][105]; struct node
{
int a,b,c,va,vb,vc,cnt;;
}; bool out(node f)
{
if(f.a==f.b&&f.c==0)
return 1;
if(f.a==f.c&&f.b==0)
return 1;
if(f.c==f.b&&f.a==0)
return 1;
return 0;
} int bfs(int s,int m,int n)
{
queue<node>q;
node f,d;
f.va=d.va=s;
f.vb=d.vb=m;
f.vc=d.vc=n;
f.a=s;
f.b=0;
f.c=0;
f.cnt=0;
vir[f.a][f.b][f.c]=1;
q.push(f);
while(!q.empty())
{
f=q.front();
q.pop(); if(out(f))
{
return f.cnt;
}
//a->bc
if(f.a>0)
{
//a->b
d.c=f.c;
if(f.a<=f.vb-f.b)//a-all>b
{
d.a=0;
d.b=f.b+f.a;
}
else
{
d.a=f.a-(f.vb-f.b);
d.b=d.vb;
}
if(vir[d.a][d.b][d.c]==0)
{
vir[d.a][d.b][d.c]=1;
d.cnt=f.cnt+1;
q.push(d);
} //a->c
d.b=f.b;
if(f.a<=f.vc-f.c)//a-all>c
{
d.a=0;
d.c=f.c+f.a;
}
else
{
d.a=f.a-(f.vc-f.c);
d.c=d.vc;
}
if(vir[d.a][d.b][d.c]==0)
{
vir[d.a][d.b][d.c]=1;
d.cnt=f.cnt+1;
q.push(d);
}
} //b->ac
if(f.b>0)
{
//b->a
d.c=f.c;
if(f.b<=f.va-f.a)//b-all>a
{
d.b=0;
d.a=f.a+f.b;
}
else
{
d.b=f.b-(f.va-f.a);
d.a=d.va;
}
if(vir[d.a][d.b][d.c]==0)
{
vir[d.a][d.b][d.c]=1;
d.cnt=f.cnt+1;
q.push(d);
} //b->c
d.a=f.a;
if(f.b<=f.vc-f.c)//a-all>c
{
d.b=0;
d.c=f.c+f.b;
}
else
{
d.b=f.b-(f.vc-f.c);
d.c=d.vc;
}
if(vir[d.a][d.b][d.c]==0)
{
vir[d.a][d.b][d.c]=1;
d.cnt=f.cnt+1;
q.push(d);
}
} //c->ab
if(f.c>0)
{
//c->b
d.a=f.a;
if(f.c<=f.vb-f.b)//c-all>b
{
d.c=0;
d.b=f.b+f.c;
}
else
{
d.c=f.c-(f.vb-f.b);
d.b=d.vb;
}
if(vir[d.a][d.b][d.c]==0)
{
vir[d.a][d.b][d.c]=1;
d.cnt=f.cnt+1;
q.push(d);
} //c->a
d.b=f.b;
if(f.c<=f.va-f.a)//c-all>a
{
d.c=0;
d.a=f.a+f.c;
}
else
{
d.c=f.c-(f.va-f.a);
d.a=d.va;
}
if(vir[d.a][d.b][d.c]==0)
{
vir[d.a][d.b][d.c]=1;
d.cnt=f.cnt+1;
q.push(d);
}
}
}
return -1;
} int main()
{
int s,m,n;
while(~scanf("%d%d%d",&s,&m,&n)&&(s||m||n))
{
if(s%2)
printf("NO\n");
else
{
memset(vir,0,sizeof(vir));
int ans=bfs(s,m,n);
if(ans==-1)
printf("NO\n");
else
printf("%d\n",ans);
} }
return 0;
}
HDU1459 非常可乐(BFS) 2016-07-24 15:00 165人阅读 评论(0) 收藏的更多相关文章
- C语言中返回字符串函数的四种实现方法 2015-05-17 15:00 23人阅读 评论(0) 收藏
C语言中返回字符串函数的四种实现方法 分类: UNIX/LINUX C/C++ 2010-12-29 02:54 11954人阅读 评论(1) 收藏 举报 语言func存储 有四种方式: 1.使用堆空 ...
- Codeforces816A Karen and Morning 2017-06-27 15:11 43人阅读 评论(0) 收藏
A. Karen and Morning time limit per test 2 seconds memory limit per test 512 megabytes input standar ...
- Hadoop常见异常及其解决方案 分类: A1_HADOOP 2014-07-09 15:02 4187人阅读 评论(0) 收藏
1.Shell$ExitCodeException 现象:运行hadoop job时出现如下异常: 14/07/09 14:42:50 INFO mapreduce.Job: Task Id : at ...
- c/c++,输入一个字符 2014-11-20 07:00 30人阅读 评论(0) 收藏
getch().getche()和getchar()函数 (1) getch()和getche()函数 这两个函数都是从键盘上读入一个字符.其调用格式为: getch(); ...
- iOS正则表达式 分类: ios技术 2015-07-14 14:00 35人阅读 评论(0) 收藏
一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...
- PIE(二分) 分类: 二分查找 2015-06-07 15:46 9人阅读 评论(0) 收藏
Pie Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissio ...
- 苹果应用商店AppStore审核中文指南 分类: ios相关 app相关 2015-07-27 15:33 84人阅读 评论(0) 收藏
目录 1. 条款与条件 2. 功能 3. 元数据.评级与排名 4. 位置 5. 推送通知 6. 游戏中心 7. 广告 8. 商标与商业外观 9. 媒体内容 10. 用户界面 11. 购买与货币 12. ...
- Find The Multiple 分类: 搜索 POJ 2015-08-09 15:19 3人阅读 评论(0) 收藏
Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21851 Accepted: 8984 Sp ...
- Basic 分类: POJ 2015-08-03 15:49 3人阅读 评论(0) 收藏
Basic Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 905 Accepted: 228 Description The p ...
随机推荐
- Haskell语言学习笔记(46)Parsec(3)
Applicative Parsing 使用 Applicative 式的 Parser. 包括使用 (<$>), (<*>), (<$), (<*), (*> ...
- adb连接过程中常见问题解决方法
在测试过程中经常会遇到需要使用adb连接服务器的问题,但是有时候经常会遇到连不上的情况,总结两种解决方式 1)error: unknown host service 此问题是由于端口号已经被占用了,可 ...
- python的可变list和不可变tuple, dict和set
list和tuple 在python中分为可变表和不可变表: 类型 名称 表示方法 可变 list [] 不可变 tuple () list list是可变表,list内部索引从0开始,正整数是正序的 ...
- Linux运维就业技术指导(九)期末架构考核
一,毕业架构设计考核筹备 1.1,架构图模板示例 1.1.1 架构图(一)概述 本架构是4层lvs负载均衡给后方7层nginx反向代理: 业务进行了动静分离: 数据库前端有memcached缓存组,降 ...
- [Fiddler] The connection to 'xxxxx.com' failed. <br />System.Security.SecurityException Failed to negotiate HTTPS connection with server.fiddler.network.https> HTTPS handshake to intelte
最近利用模拟发get请求的时候出现: [Fiddler] The connection to ‘xxxxx.com' failed. <br />System.Security.Secur ...
- Bean Validation技术实现对Javabean的校验
概述:在java开发时,由于分层的原因(表现层-控制层-业务层-数据持久层),有时候需要对传入的Javabean进行校验,如果过多的校验会导致比较繁琐,做重复的工作,下面将介绍Bean Validat ...
- Cannot create inner bean '(inner bean)#67f903b5' of typ
严重: Context initialization failedorg.springframework.beans.factory.BeanCreationException: Error crea ...
- ECMAScript5新特性之isFrozen、freeze
对象被冻结后: 1 不能添加属性. 2 不能删除属性. 3 不能修改属性.(赋值) 4 不能修改属性描述符.(会抛异常) var fruit = { name : '苹果', desc : '红富士' ...
- Django的models操作
一.先看单表操作 增 方式1: models.book.objects.create( Book_name = "aaa", Book_info = "bbb" ...
- [leetcode]340. Longest Substring with At Most K Distinct Characters至多包含K种字符的最长子串
Given a string, find the length of the longest substring T that contains at most k distinct characte ...