POJ3278Catch That Cow

来源:互联网 发布:网络零售额占社零比重 编辑:程序博客网 时间:2024/06/06 06:59

让我re了好几发的题,后来跟着标称一行一行的对比,发现我的判断顺序有问题。要先判断是否越界,再判断标记变量,否则会指针越界。

#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<algorithm>#include<stack>#include<queue>using namespace std;const int N = 200100;int n,k;struct state{    int x,s;};queue<state> Q;int vis[N];void bfs(){    int X,S;    while(!Q.empty())    {        state t=Q.front();        Q.pop();        //printf("%d ",t.x);        X=t.x;        S=t.s;        if(X==k)        {            printf("%d\n",S);            return ;        }        if(X>=1&&vis[X-1]==0)        {            struct state p;            p.x=X-1;            p.s=S+1;            vis[X-1]=1;            Q.push(p);        }        if(X<=k&&vis[X+1]==0)        {            struct state p;            p.x=X+1;            p.s=S+1;            vis[X+1]=1;            Q.push(p);        }        if(X<=k&&vis[X*2]==0)        {            struct state p;            p.x=X*2;            p.s=S+1;            vis[X*2]=1;            Q.push(p);        }    }}int main(){    while(~scanf("%d%d",&n,&k))    {        while(!Q.empty())Q.pop();        memset(vis,0,sizeof(vis));        struct state t;        t.x=n;        t.s=0;        vis[n]=1;        Q.push(t);        bfs();    }    return 0;}


0 0
原创粉丝点击