HDU--1548:A strange lift (BFS)

来源:互联网 发布:ubuntu离线安装包下载 编辑:程序博客网 时间:2024/04/29 01:05

1. 题目源地址:http://acm.hdu.edu.cn/showproblem.php?pid=1548

2. 源代码:

#include<iostream>#include<queue>#include<memory.h>using namespace std;int floor[210],visited[210];int N,A,B;struct node{   int x;   int step;}start,current,next;int BFS(int S,int E){    int i;    queue<node> Q;        start.x=S;    start.step=0;    visited[start.x]=1;    Q.push(start);        while(!Q.empty())    {       current=Q.front();       Q.pop();              if(current.x==E)   return current.step;              //电梯向上       next.x=current.x+floor[current.x];       if(next.x>=1 && next.x<=B && !visited[next.x])       {          visited[next.x]=1;          next.step=current.step+1;           Q.push(next);       }              //电梯向下        next.x=current.x-floor[current.x];       if(next.x>=1 && next.x<=B && !visited[next.x])       {          visited[next.x]=1;          next.step=current.step+1;          Q.push(next);       }    }   return -1; }int main(){    int i;    while(cin>>N && N)    {       cin>>A>>B;       memset(visited,0,sizeof(visited));       for(i=1;i<=N;i++)          cin>>floor[i];                int ans=BFS(A,B);              if(ans!=-1)          cout<<ans<<endl;       else          cout<<-1<<endl;    }    return 0;} 


0 0
原创粉丝点击