POJ3278 (果bfs)

来源:互联网 发布:c语言长整型定义 编辑:程序博客网 时间:2024/04/28 16:10

RE到死。。。

看了题解才知道忘了剪枝了。。。

比较果的BFS(一开始竟然想成了dfs。。。。菜)

题意:大概是给n,k   将通过将n进行+1,-1,*2的运算求最少需要多上次可以转化为k。



#include <iostream>#include <cstdio>#include <string>#include <queue>#include <algorithm>using namespace std;const int maxn =1e5+10;int vis[maxn];int n,k;int bfs(){    queue<int>que;    que.push(n);    while(!que.empty())    {        int t=que.front();que.pop();        if(t==k) return vis[t]-1;        if(t-1>=0&&!vis[t-1])        {            vis[t-1]=vis[t]+1;            que.push(t-1);        }        if(t+1<maxn&&!vis[t+1])        {            vis[t+1]=vis[t]+1;            que.push(t+1);        }        if(t*2<maxn&&!vis[t*2])        {            vis[t*2]=vis[t]+1;            que.push(t*2);        }    }}int main(){    scanf("%d%d",&n,&k);    vis[n]=1;    int ans=bfs();    printf("%d\n",ans);}


0 0