Catch That Cow

#include <bits/stdc++.h>
using namespace std;
int visit[200000];
struct node
{
    int data,step;
}s,b[200000];
int n,m;
void BFS()
{
    int in,out;
    in=0,out=0;
    visit[n]=1;
    b[in].data=n;
    b[in].step=0;
    in++;
    while(in>out)//類似樹的層次遍歷
    {
        s=b[out];
        out++;
        if(s.data==m)
        {
            printf("%d\n",s.step);
            break;
        }
        if(s.data+1<=m&&visit[s.data+1]==0)
        {
            b[in].data=s.data+1;
            b[in].step=s.step+1;
            in++;
            visit[s.data+1]=1;
        }
        if(s.data*2<=m&&visit[s.data*2]==0)
        {
            b[in].data=s.data*2;
            b[in].step=s.step+1;
            in++;
            visit[s.data*2]=1;
        }
        if(s.data-1>=0&&visit[s.data-1]==0)
        {
            b[in].data=s.data-1;
            b[in].step=s.step+1;
            in++;
            visit[s.data-1]=1;
        }
    }
}
int main()
{
    while(~scanf("%d%d",&n,&m))
    {
        memset(visit,0,sizeof(visit));
        BFS();
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章