poj 3278 找牛

来源:互联网 发布:考研大数据 编辑:程序博客网 时间:2024/06/03 22:38


此题暴露出 广搜 还是很差.....首先是想不到用搜索 , 然后是 不知道写标记 ,要明白广搜的用法,光知道走迷宫问题要标记,这个就不标记了,哎......明早再写一遍

# include<stdio.h># include<cstdlib># include<string.h># include<queue># include<algorithm>using namespace std;int n,m;queue<int> q;int step[100010];int vis[100010];int rear,front;int BFS(){    int i;    q.push(n);    step[n]=0;    vis[n]=1;    while(!q.empty()){     front=q.front();     q.pop();     for(i=0 ;i<3; i++){        if(i==0) rear=front+1;        if(i==1) rear=front-1;        if(i==2) rear=front*2;        if(rear>=0 && rear<=100000 && vis[rear]==0){            vis[rear]=1;            step[rear]=step[front]+1;            q.push(rear);        }        if(rear== m) return step[rear];     }    }return -1;}int main(){    while(scanf("%d %d",&n,&m)!=EOF){            memset(step,0,sizeof(step));            memset(vis,0,sizeof(vis));           printf("%d\n" ,BFS());  }}


0 0