码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构之bfs

时间:2015-03-28 18:38:46      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。

poj3278

思路:根节点n,        n+1,n-1,2*n三个子节点不断地延伸,目标节点k,寻找这样一天最短的路

代码:

 

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
struct node
{
    int x;
    int ans;
}q[1000005];
int jx[]= {-1,1};
int n,k;
int map[1000005],v[1000005];

 void bfs()
{
    struct node t,f;
    int e=0,s=0;
    t.x=n;
    v[t.x]=1;
    t.ans=0;
    q[e++]=t;
    while(s<e)
    {
        t=q[s++];
        if(t.x==k)
        {
            printf("%d\n",t.ans);
            break;
        }

     for(int i=0; i<3; i++)
        {
            if(i==2)
                f.x=t.x*2;
            else f.x=t.x+jx[i];
            if(!v[f.x]&&f.x>=0&&f.x<=100000)
            {
                f.ans=t.ans+1;
                q[e++]=f;
                v[f.x]=1;
            }
        }
    }
}
int main()
{
    while(scanf("%d%d",&n,&k)!=EOF)
    {
        memset(map,0,sizeof(map));
        memset(v,0,sizeof(v));
        bfs();
    }
    return 0;
}

数据结构之bfs

标签:

原文地址:http://www.cnblogs.com/ACWQYYY/p/4374558.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!