zoukankan      html  css  js  c++  java
  • (简单) HDU 2612 Find a way,BFS。

      Description

      Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year, yifenfei have many people to meet. Especially a good friend Merceki.
    Yifenfei’s home is at the countryside, but Merceki’s home is in the center of city. So yifenfei made arrangements with Merceki to meet at a KFC. There are many KFC in Ningbo,  they want to choose one that let the total time to it be most smallest.
      Now give you a Ningbo map, Both yifenfei and Merceki can move up, down ,left, right to the adjacent road by cost 11 minutes.

      就是求两个人到某一个KFC的最小值,这个题记得以前做的时候被坑惨了,要注意初始化为INF,以及说人的起始位置要表示为可通过。

    代码如下:

    #include<iostream>
    #include<cstring>
    
    using namespace std;
    
    const int INF=1e7;
    
    short map1[205][205];
    int que[40005],las,fir;
    int ans[205][205];
    int ans1[205][205];
    int N,M;
    int couKFC,Si,Sj,Ei,Ej;
    
    bool judge(int x,int y,int (*rem)[205])
    {
        if(x<=0||y<=0||x>N||y>M)
            return 0;
    
        if(rem[x][y]!=INF)
            return 0;
    
        if(map1[x][y]==0)
            return 0;
    
        return 1;
    }
    
    void bfs(int x,int y,int (*rem)[205])
    {
        las=fir=0;
        int cou=0;
        int temp,t1,t2;
    
        que[las++]=x*1000+y;
        rem[x][y]=0;
    
        while(las-fir)
        {
            temp=que[fir++];
            t1=temp/1000;
            t2=temp%1000;
            temp=rem[t1][t2];
    
            if(map1[t1][t2]==2)
                ++cou;
    
            if(cou>=couKFC)
                return;
    
            --t1;
            if(judge(t1,t2,rem))
            {
                rem[t1][t2]=temp+1;
                que[las++]=t1*1000+t2;
            }    
            t1+=2;
            if(judge(t1,t2,rem))
            {
                rem[t1][t2]=temp+1;
                que[las++]=t1*1000+t2;
            }    
            --t1;
            --t2;
            if(judge(t1,t2,rem))
            {
                rem[t1][t2]=temp+1;
                que[las++]=t1*1000+t2;
            }    
            t2+=2;
            if(judge(t1,t2,rem))
            {
                rem[t1][t2]=temp+1;
                que[las++]=t1*1000+t2;
            }
        }
    }
    
    int slove()
    {
        bfs(Si,Sj,ans);
        bfs(Ei,Ej,ans1);
    
        int minn=INF;
    
        for(int i=1;i<=N;++i)
            for(int j=1;j<=M;++j)
                if(map1[i][j]==2)
                    if(minn>ans[i][j]+ans1[i][j])
                        minn=ans[i][j]+ans1[i][j];
    
        return minn*11;
    }
    
    int main()
    {
        ios::sync_with_stdio(false);
    
        char c;
    
        while(cin>>N>>M)
        {
            couKFC=0;
    
            for(int i=1;i<=N;++i)
                for(int j=1;j<=M;++j)
                {
                    cin>>c;
                    ans[i][j]=ans1[i][j]=INF;
    
                    switch(c)
                    {
                        case 'Y':
                            map1[i][j]=1;
                            Si=i;
                            Sj=j;
                            break;
                        case 'M':
                            map1[i][j]=1;
                            Ei=i;
                            Ej=j;
                            break;
                        case '.':
                            map1[i][j]=1;
                            break;
                        case '#':
                            map1[i][j]=0;
                            break;
                        case '@':
                            map1[i][j]=2;
                            ++couKFC;
                            break;
                    }
                }
    
            cout<<slove()<<endl;
        }
    
        return 0;
    }
    View Code
  • 相关阅读:
    python 将字符串作为脚本运行
    Django Model获取字段名称并转为List存储
    django 过滤查询
    django 视图中异步执行python脚本
    python 异步执行python脚本
    django 筛选不等于的内容
    phpstorm中快速添加函数注释
    搜索模板elasticsearch
    laravel模型关联
    laravel关联用户
  • 原文地址:https://www.cnblogs.com/whywhy/p/4229942.html
Copyright © 2011-2022 走看看