记录编号 49652 评测结果 AAAAAAAAAA
题目名称 造房子的学问 最终得分 100
用户昵称 Gravatar日光。 是否通过 通过
代码语言 C++ 运行时间 0.021 s
提交时间 2012-11-08 19:23:02 内存使用 3.83 MiB
显示代码纯文本
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int n,m,i,a,b,c,l,tmp,head,tail,x;
int queue[100000];
int ans[40000];
int f[40000];
void pushin(int x,int tmp)
{
	if(x>0)
	{
		if(ans[x]>tmp && f[x])
		{
			queue[++tail]=x;
			f[x]=false;
			ans[x]=tmp;
		}
	}
}
int main()
{
	freopen("wood.in","r",stdin);
	freopen("wood.out","w",stdout);
	scanf("%d%d%d%d%d%d",&n,&m,&a,&b,&c,&l);
	memset(f,true,sizeof(f));
	memset(ans,0x7f,sizeof(ans));
	queue[1]=n;
	f[n]=false;
	ans[n]=0;
	head=1;
	tail=1;
	while (head<=tail)
	{
		x=queue[head];
		f[x]=true;
		tmp=x+a;
		pushin(tmp,ans[x]+1);
		tmp=x+b;
		pushin(tmp,ans[x]+1);
		tmp=x+c;
		pushin(tmp,ans[x]+1);
		tmp=x-l;
		pushin(tmp,ans[x]+1);
		tmp=l;
		pushin(tmp,ans[x]+1);
		tmp=x/2;
		pushin(tmp,ans[x]+1);
		head++;
	}
	if (ans[m]==ans[0]) printf("No solution.");
	else printf("%d",ans[m]);
	return 0;
}