POJ-3278 catch that cow 广度优先搜索

来源:互联网 发布:java怎么定义函数 编辑:程序博客网 时间:2024/05/18 18:15

以牛的位置为起始点向前搜索,注意状态更新就好了


不要问我为什么是从后往前搜...我也不知道,我第一遍从前往后搜的wa了 然后换从后往前搜就AC了...


#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>#include <queue>#include <stack>using namespace std;int dis[100005];int bfs(int n){    for(int i=0;i<=100000;i++){        dis[i]=99999999;    }    queue<int>q;    q.push(n);    dis[n]=0;    while(!q.empty()){        int t=q.front();        q.pop();        if(dis[t-1]>dis[t]+1&&t>=1){            dis[t-1]=dis[t]+1;            q.push(t-1);        }        if(dis[t+1]>dis[t]+1&&t<=100000){            dis[t+1]=dis[t]+1;            q.push(t+1);        }        if(t%2==0)        if(dis[t/2]>dis[t]+1&&t>=0){            dis[t/2]=dis[t]+1;            q.push(t/2);        }    }}int main(){    int N,K;    while(cin>>N>>K){            bfs(K);            cout<<dis[N]<<endl;    }    return 0;}


原创粉丝点击