hdu 1548 A strange lift

来源:互联网 发布:mac西柚色口红 编辑:程序博客网 时间:2024/05/16 18:42

用队列直接广搜。。。


#include <iostream>#include<queue>using namespace std;queue<int> q;int k[205];int vis[205];int t[205];int n,a,b;void bfs(){    q.push(a);    vis[a]=1;    t[a]=0;    int cur;    while(!q.empty())    {        cur=q.front();        q.pop();        if(cur==b)            break;        int tmp=cur+k[cur];        if(tmp<=n&&!vis[tmp])   //是否大于n,否则,进队列        {            vis[tmp]=1;            t[tmp]=t[cur]+1;    //更新时间            q.push(tmp);        }        tmp=cur-k[cur];        if(tmp>0&&!vis[tmp])        {            vis[tmp]=1;            t[tmp]=t[cur]+1;            q.push(tmp);        }    }    if(cur!=b) printf("-1\n");    else printf("%d\n",t[b]);}int main(){    while(scanf("%d",&n)==1&&n)    {        scanf("%d %d",&a,&b);        memset(vis,0,sizeof(vis));        while(!q.empty()) q.pop();        for(int i=1;i<=n;i++)            scanf("%d",&k[i]);        bfs();    }    return 0;}


原创粉丝点击