码迷,mamicode.com
首页 > 其他好文 > 详细

POJ-3278-Catch That Cow-广搜(BFS)

时间:2015-07-22 10:44:27      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:poj3278   广搜模板   bfs   

题目链接:http://poj.org/problem?id=3278

这是一道广搜的模板题,我就不解释了,直接看代码;

#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
#include<queue>
#include<map>
#include<stack>
#include<set>
#include<vector>
#include<algorithm>
#define LL long long
#define MAXN 100000
using namespace std;
int vis[MAXN+10],n,k;
struct node
{
    int x,s;
    node(int xx,int sx):x(xx),s(sx){ }      //  结构体函数,初始化;
};
void bfs(int n)
{
    queue<node>q;
    q.push(node(n,0));      //  将起始点入队;
    vis[n]=1;
    while(!q.empty()){
        node next=q.front();
        q.pop();
        if(next.x==k){      //  说明找到了。。。
            printf("%d\n",next.s);
            return;
        }
        if((next.x+1)<=MAXN&&!vis[next.x+1]) q.push(node(next.x+1,next.s+1)), vis[next.x+1]=1;      //  三种情况,可行则分别入队;并标记;
        if((next.x-1)>=0&&!vis[next.x-1]) q.push(node(next.x-1,next.s+1)), vis[next.x-1]=1;
        if((next.x*2)<=MAXN&&!vis[next.x*2]) q.push(node(next.x*2,next.s+1)), vis[next.x*2]=1;
    }
    return;
}
int main()
{
    while(~scanf("%d%d",&n,&k)){
        memset(vis,0,sizeof(vis));
        bfs(n);
    }
    return 0;
}


 

版权声明:本文为博主原创文章,未经博主允许不得转载。

POJ-3278-Catch That Cow-广搜(BFS)

标签:poj3278   广搜模板   bfs   

原文地址:http://blog.csdn.net/wlxsq/article/details/46998353

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!