记录编号 |
110526 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO 1.4] 母亲的牛奶 |
最终得分 |
100 |
用户昵称 |
chs |
是否通过 |
通过 |
代码语言 |
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;
}