Description
<span style="font-family:FangSong_GB2312;font-size:14px;"> #include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
struct node
{
int x,y,step,mark;
}p,now;
void bfs(int a,int b,int n)
{
int i,j;
int vis[3][205][205];
memset(vis,0,sizeof(vis));
now.x=a;
now.y=b;
now.step=0;
now.mark=0;
queue<node>q;
q.push(now);
vis[now.mark][now.x][now.y]=1;
while(!q.empty())
{
p=q.front();
if(p.x==a&&p.y==b&&p.mark==1)
{
printf("%d\n",p.step);
return ;
}
q.pop();
for(i=0;i<=p.y;i++)//狼
{
for(j=0;j<=p.x;j++)//羊
{
if(i+j==0)
continue;
if(j<i&&j)
continue;
if(i+j>n)
continue;
now.x=a-p.x+j;
now.y=b-p.y+i;
now.step=p.step+1;
now.mark=!p.mark;
if((now.x<now.y&&now.x!=0)||(a-now.x<b-now.y&&a-now.x!=0))
continue;
if(!vis[now.mark][now.x][now.y])
{
vis[now.mark][now.x][now.y]=1;
q.push(now);
}
}
}
}
printf("-1\n");
}
int main()
{
int x,y,n;
while(scanf("%d%d%d",&x,&y,&n)!=EOF)
bfs(x,y,n);
return 0;
} </span>