调了好久把自己整笑了,肝完这题立马喝了一瓶可乐泄愤,小孩子才分可乐,我全都要
#include<bits/stdc++.h>
using namespace std;
struct node
{
int m,l,r,cot;
};
int vis[102][102][102];
int main()
{
int a,b,c;
while(cin>>a>>b>>c)
{
if(a==0)
break;
if(a%2)
{
cout<<"NO"<<endl;
continue;
}
queue<node>q;
node x,y;int flag=0;
x.m=a;x.l=0;x.r=0;x.cot=0;
q.push(x);
memset(vis,0,sizeof(vis));
while(!q.empty())
{
x=q.front();//cout<<x.m<<' '<<x.l<<' '<<x.r<<endl;
q.pop();
if(x.l==x.r&&x.m==0||x.l==x.m&&x.r==0||x.m==x.r&&x.l==0)
{
cout<<x.cot<<endl;
flag=1;
break;
}
if(vis[x.l][x.m][x.r])
continue;
vis[x.l][x.m][x.r]=1;
if(x.l<b)
{
if(x.m)
{
if(x.m+x.l<=b)
{
y.l=x.l+x.m;y.m=0;y.r=x.r;y.cot=x.cot+1;q.push(y);
}
else
{
y.m=x.m-b+x.l;y.l=b;y.r=x.r;y.cot=x.cot+1;q.push(y);
}
}
if(x.r)
{
if(x.r+x.l<=b)
{
y.l=x.l+x.r;y.r=0;y.m=x.m;y.cot=x.cot+1;q.push(y);
}
else
{
y.r=x.r-b+x.l;y.l=b;y.m=x.m;y.cot=x.cot+1;q.push(y);
}
}
}
if(x.r<c)
{
if(x.m)
{
if(x.m+x.r<=c)
{
y.r=x.r+x.m;y.m=0;y.l=x.l;y.cot=x.cot+1;q.push(y);
}
else
{
y.m=x.m-c+x.r;y.r=c;y.l=x.l;y.cot=x.cot+1;q.push(y);
}
}
if(x.l)
{
if(x.l+x.r<=c)
{
y.r=x.r+x.l;y.l=0;y.m=x.m;y.cot=x.cot+1;q.push(y);
}
else
{
y.l=x.l-c+x.r;y.r=c;y.m=x.m;y.cot=x.cot+1;q.push(y);
}
}
}
if(x.l)
{
y.m=x.m+x.l;y.l=0;y.r=x.r;y.cot=x.cot+1;q.push(y);
}
if(x.r)
{
y.m=x.m+x.r;y.r=0;y.l=x.l;y.cot=x.cot+1;q.push(y);
}
}
if(!flag)
cout<<"NO"<<endl;
}
}
标签:node,int,BFS,vis,1495,102,HDOJ,可乐
From: https://www.cnblogs.com/jinshuli/p/18565139