记录编号 110526 评测结果 AAAAAAAAAA
题目名称 [USACO 1.4] 母亲的牛奶 最终得分 100
用户昵称 Gravatarchs 是否通过 通过
代码语言 C++ 运行时间 0.003 s
提交时间 2014-07-11 18:02:24 内存使用 0.32 MiB
显示代码纯文本
#include<iostream>
#include<fstream>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=100;
const int m=21;
int a,b,c;
int p=0;
int s[maxn];
bool vis[m][m][m]={0};
void milk(int x,int y,int z)
{
	vis[x][y][z]=1;
	if(x==0) s[p++]=z;
	//======================================================1
	if(x>0&&y<b){					//a->b
		if(x<=b-y&&vis[0][y+x][z]==0) milk(0,y+x,z);	
		if(x>b-y&&vis[x-b+y][b][z]==0) milk(x-b+y,b,z);}
	//======================================================2
	if(x>0&&z<c){					//a->c
		if(x<=c-z&&vis[0][y][z+x]==0) milk(0,y,z+x);	
		if(x>c-z&&vis[x-c+z][y][c]==0) milk(x-c+z,y,c);}
	//======================================================3
	if(y>0&&x<a){					//b->a
		if(y<=a-x&&vis[x+y][0][z]==0) milk(x+y,0,z);	
		if(y>a-x&&vis[a][y-a+x][z]==0) milk(a,y-a+x,z);}
	//======================================================4
	if(y>0&&z<c){					//b->c
		if(y<=c-z&&vis[x][0][z+y]==0) milk(x,0,z+y);	
		if(y>c-z&&vis[x][y-c+z][c]==0) milk(x,y-c+z,c);}
	//======================================================5
	if(z>0&&x<a){					//c->a
		if(z<=a-x&&vis[x+z][y][0]==0) milk(x+z,y,0);	
		if(z>a-x&&vis[a][y][z-a+x]==0) milk(a,y,z-a+x);}
	//======================================================6
	if(z>0&&y<b){					//c->b
		if(z<=b-y&&vis[x][y+z][0]==0) milk(x,y+z,0);	
		if(z>b-y&&vis[x][b][z-b+y]==0) milk(x,b,z-b+y);}
	//===================================================================
}
int main()
{
	freopen("milk3.in","r",stdin);
	freopen("milk3.out","w",stdout);
	cin>>a>>b>>c;
	memset(s,-1,sizeof(s));
	milk(0,0,c);
	sort(s,s+maxn);
	for(int i=0;i<maxn;i++) if(s[i]!=-1) cout<<s[i]<<" ";
	cout<<endl;
	return 0;
}