zoukankan      html  css  js  c++  java
  • zoj 1649 bfs

    /*步数最小的不一定是时间最少的
    常规的bfs只能求出步数最少的。
    而在这题中一个点可以多次走,所以必须记录最优的那个值
    */
    #include<stdio.h>
    #include<queue>
    #include<string.h>
    using namespace std;
    #define inf 0x3fffffff
    #define  N  300
    char s[N][N];
    struct node {
    int x,y,step,time;
    }ss,tt,next;
    int n,m;
    int mintime[N][N];
    int dis[4][2]={1,0,-1,0,0,1,0,-1};
    int judge(int x,int y) {
    if(x>=1&&x<=n&&y>=1&&y<=m&&s[x][y]!='#')
        return 1;
    return 0;
    }
    int bfs() {
       queue<node>q;
       q.push(ss);
       int i;
       ss.step=0;
       ss.time=0;
       q.push(ss);
       mintime[ss.x][ss.y]=0;
       while(!q.empty()) {
        ss=q.front();
        q.pop();
        for(i=0;i<4;i++) {
            int xx=next.x=ss.x+dis[i][0];
            int yy=next.y=ss.y+dis[i][1];
            next.step=ss.step+1;
            next.time=ss.time+1;
            if(judge(xx,yy)) {
                if(s[xx][yy]=='x')next.time+=1;
                if(next.time<mintime[xx][yy]) {//重点
                mintime[xx][yy]=next.time;
                q.push(next);
                }
            }
        }
       }
       return  mintime[tt.x][tt.y];
    }
    int main() {
        int  i,j,k;
        while(scanf("%d%d",&n,&m)!=EOF) {
            for(i=1;i<=n;i++)
                scanf("%s",s[i]+1);
            for(i=1;i<=n;i++)
                for(j=1;j<=m;j++) {
                        mintime[i][j]=inf;//初始化
            if(s[i][j]=='r') {
                ss.x=i;
                ss.y=j;
            }
            if(s[i][j]=='a') {
                tt.x=i;
                tt.y=j;
            }
                }
                k=bfs();
                if(k>=inf)
                    printf("Poor ANGEL has to stay in the prison all his life.
    ");
                else
                    printf("%d
    ",k);
        }
    return 0;
    }
    

  • 相关阅读:
    react实现拖拽
    JS实现判断滚动条滚到页面底部并执行事件的方法
    获取地址中的参数 封装在params对象里面
    git常用命令
    Linux定时任务Crontab命令详解
    tars 部署
    tars 问题汇总
    Mac
    http head
    SSL
  • 原文地址:https://www.cnblogs.com/thefirstfeeling/p/4410621.html
Copyright © 2011-2022 走看看