hdu2717

来源:互联网 发布:apache官方文档ant 编辑:程序博客网 时间:2024/05/16 04:58

简单的搜索,但是,hdu有一个就很不好,明明没让你多组输入,但是!!!!!!
md,就因为这个我改了一个多小时!!!!!
还有就是一个坑点,看代码吧

#include<cstdio>#include<cstring>#include<queue>using namespace std;const int N = 1e6 + 10;int n , k , vis[N];struct node{    int x , time;};void bfs(){    queue<node>q;    while(!q.empty()){        q.pop();    }    node p , tmp;    p.x = n , p.time = 0;    vis[p.x] = 1;    q.push(p);    while(!q.empty()){        p = q.front();        if(p.x == k){//你要先判断,我一开始是在循环中判断,但是如果第一个点就是的话就gg了            printf("%d\n",p.time);            return;        }        q.pop();        for(int i = 0 ; i < 3 ; i++){            if(i == 0){                tmp.x = p.x + 1;                tmp.time = p.time + 1;                if(tmp.x >= N || tmp.x < 0 || vis[tmp.x] == 1) continue;                q.push(tmp);                vis[tmp.x] = 1;            }            if(i == 1){                tmp.x = p.x - 1;                tmp.time = p.time + 1;                if(tmp.x >= N || tmp.x < 0 || vis[tmp.x] == 1) continue;                q.push(tmp);                vis[tmp.x] = 1;            }            if(i == 2){                tmp.x = 2 * p.x ;                tmp.time = p.time + 1;                if(tmp.x < 0 || tmp.x >= N || vis[tmp.x] == 1) continue;                q.push(tmp);                vis[tmp.x] = 1;            }        }    }}int main(){        while(~scanf("%d %d", &n , &k)){        memset(vis , 0 , sizeof(vis));        bfs();        }}
0 0
原创粉丝点击