裸BFS题若干

Posted wmxl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了裸BFS题若干相关的知识,希望对你有一定的参考价值。

1poj 3278

http://poj.org/problem?id=3278

#include<math.h>
#include<algorithm>
#include<string>
#include<string.h>
#include<stdio.h>
#include<iostream>

using namespace std;
#define N 100005
#define M 155
#define INF 0x3f3f3f3f
struct node

    int x, t;
st;
int n, k, a, b, x, y, t, cnt, ans;
bool v[N];

void Bfs(int n)

    ans = 0;
    queue<node>q;
    while(!q.empty()) q.pop();
    memset(v, 0, sizeof(v));
    st.x = n;
    st.t = 0;
    q.push(st);
    v[st.x] = 1;

    while(!q.empty())
    
        node head = q.front();
        q.pop();
        if(head.x == k)
        
            ans = head.t;
            return;
        

        for(int i = 0; i < 3; i++)
        
            node next = head;
            if(i == 0) next.x = head.x + 1;
            else if(i == 1) next.x = head.x - 1;
            else next.x = head.x * 2;

            next.t = head.t + 1;

            if(next.x < 0 || next.x > 100000) continue;
            if(v[next.x] == 1 ) continue;
            // 一开始写成一行,if(v[next.x] == 1 || next.x < 0 || next.x > 100000) continue; 找了好久的bug,以后能分开的还是分开吧,不要省那一两行
            q.push(next);
            v[next.x] = 1;
        
    


int main()

    while(cin>>n>>k)

        Bfs(n);

        cout<<ans<<endl;

    
    return 0;

以上是关于裸BFS题若干的主要内容,如果未能解决你的问题,请参考以下文章

网络流 24 题 解题报告

BZOJ3393 [Usaco2009 Jan]Laserphones 激光通讯 BFS

一只蒟蒻的刷题历程蓝桥杯历届试题 九宫重排 (八数码问题:BFS+集合set)

图的遍历——BFS

木材加工(裸二分题)(附二分算法粗略介绍)

[bfs最短路] aw1100. 抓住那头牛(bfs最短路+模板题)