hdu2717 Catch That Cow(bfs水)

来源:互联网 发布:java replacefirst 编辑:程序博客网 时间:2024/05/18 22:40

真的是,太水了。。。原来bfs也有这么多水题

#include <stdio.h>#include <algorithm>#include <iostream>#include <queue>#include <string.h>using namespace std;const int N = 1000005;const int INF = 1000000;bool vis[N];int st, ed, n;int dir[2] = {1, -1};struct node{    int x;    int step;};bool check(int x){    if(x >= 0 && x <= 1000000 && !vis[x]) return true;    else return false;}int bfs(){    queue <node> q;    node s_pos;    s_pos.x = st;    s_pos.step = 0;    vis[s_pos.x] = 1;    q.push(s_pos);    if(st == ed) return 0;    while(!q.empty())    {        node tmp = q.front();        q.pop();        for(int i = 0; i < 3; i ++)        {            node tmp2;            tmp2 = tmp;            if(i == 0 || i == 1) tmp2.x += dir[i];            else if(i == 2) tmp2.x *= 2;            tmp2.step += 1;            if(check(tmp2.x))            {                if(tmp2.x == ed) return tmp2.step;                vis[tmp2.x] = 1;                q.push(tmp2);            }        }    }}int main(){   // freopen("in.txt", "r", stdin);    while(~scanf("%d%d", &st, &ed))    {        memset(vis, 0, sizeof(vis));        printf("%d\n", bfs());    }    return 0;}


0 0