hdu 1548 A strange lift

来源:互联网 发布:java与c# 编辑:程序博客网 时间:2024/06/05 11:46

bfs 不是太难的

//12.8   bfs 已过  未记载 #include<iostream>#include<queue>#include<string.h>using namespace std;int map[205];int visited[205];int counted[205];int n;int nexted[2]={1,-1};void bfs(int a,int b){    queue<int> q;    q.push(a);    while(!q.empty())    {        int front,t;        front=q.front();        q.pop();        if(front==b) {            cout<<counted[b]<<endl;            return;        }        for(int i=0;i<=1;i++)        {            int h=map[front];            if(i==1) h=-h;           t=front+h;          // cout<<t<<" ";           if(visited[t]==1||t<1||t>n) continue;           q.push(t);           //cout<<t<<" ";           visited[t]=1;           counted[t]=counted[front]+1;         }    }    cout<<"-1"<<endl;    return; }  int main() {    int a,b; while(scanf("%d",&n)==1)  {    if(n==0) break;    memset(map,0,sizeof(map));    memset(counted,0,sizeof(counted));    memset(visited,0,sizeof(visited));    cin>>a>>b;    for(int i=1;i<=n;i++)    {        cin>>map[i];     }     bfs(a,b);  }    return 0; }
原创粉丝点击