您的位置:首页 > 其它

bfs

2016-04-16 10:25 429 查看
 copy

#include <iostream>  

#include <cstdio>  

#include <cstring>  

#include <queue>  

#include <stack>  

  

using namespace std;  

  

int N, K;  

int vis[100010];  

  

struct node {  

    int pos;  

    int minute;  

};  

  

int bfs();  

  

int main()  

{  

//    freopen("in.txt", "r", stdin);  

//    freopen("out.txt", "w", stdout);  

  

    cin>>N>>K;  

    memset(vis, 0, sizeof(vis));  

    cout<<bfs()<<endl;  

  

    return 0;  

}  

  

int bfs()  

{  

    queue<node>Queue;  

    node Node;  

    Node.pos = N;  

    Node.minute = 0;  

    vis[Node.pos] = 1;  

    Queue.push(Node);  

    while (!Queue.empty()) {  

        int x = Queue.front().pos;  

        int y = Queue.front().minute;  

//        cout<<x<<endl;  

        Queue.pop();  

        if (x == K) {  

            return y;  

        }  

        if (x-1>=0 && (!vis[x-1])) {  

            vis[x-1] = 1;  

            Node.pos = x-1;  

            Node.minute = y+1;  

            Queue.push(Node);  

        }  

        if (x+1<=100000 && (!vis[x+1])) {  

            vis[x+1] = 1;  

            Node.pos = x+1;  

            Node.minute = y+1;  

            Queue.push(Node);  

        }  

        if (x*2<=100000 && (!vis[x*2])) {  

            vis[x*2] = 1;  

            Node.pos = x*2;  

            Node.minute = y+1;  

            Queue.push(Node);  

        }  

    }  

    return 0;  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: