HDU

来源:互联网 发布:网络犯罪举报中心 编辑:程序博客网 时间:2024/05/17 23:54

题意:Y,M两个人要去KFC一起吃个饭,'@'表示KFC。问Y,M每走一步花费11的体力,他俩花费最少的体力为多少?KFC有多个,保证至少有一个KFC是他俩都能到达的。

思路:BFS。两个人都跑一遍地图,存一下每个人到每个点的最小步数。然后从是'@'的点的中求一个最小值。

注意:要把存步数那个数组赋初值为极大值。赋0会wa。因为可能有一个点他俩都到不了,赋0的话最小步数会求一个得0。

#include<bits/stdc++.h>using namespace std;const int INF = 0x3f3f3f;const int MAXN = 205;int n, m;char MAP[MAXN][MAXN];int STEP[2][MAXN][MAXN], dir[4][2] = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};struct Point{    int x, y, step;}NOW,NEXT;bool vis[MAXN][MAXN];void bfs(int sx, int sy, int people)//people=0,1代表Y,M{    memset(vis, 0, sizeof(vis));    queue<Point> q;    NOW.x = sx; NOW.y = sy; NOW.step = 0; vis[sx][sy] = true;    q.push(NOW);    while (!q.empty())    {        NOW = q.front();        q.pop();        STEP[people][NOW.x][NOW.y] = NOW.step;//记录people步数        for(int i = 0; i < 4; i++)        {            int X = NOW.x + dir[i][0], Y = NOW.y + dir[i][1];            if(X >= 0 && Y >= 0 && X < n && Y < m && MAP[X][Y] != '#' && !vis[X][Y])            {                vis[X][Y] = true;                NEXT.x = X; NEXT.y = Y; NEXT.step = NOW.step + 1;                q.push(NEXT);            }        }    }}int main(){    while (~scanf("%d%d", &n, &m))    {        int x1, x2, y1, y2;        for (int i = 0; i < n; i++)        {            for (int j = 0; j < m; j++)            {                cin >> MAP[i][j];                if(MAP[i][j] == 'Y')                {                    x1 = i; y1 = j;                }                else if(MAP[i][j] == 'M')                {                    x2 = i; y2 = j;                }            }        }        memset(STEP, INF, sizeof(STEP));//步数赋值为极大值,注意memset用法        bfs(x1, y1 ,0);//Y跑一遍图        bfs(x2, y2 ,1);//M跑一遍图        int MIN = INF;//求最小值        for (int i = 0; i < n; i++)        {            for (int j = 0; j < m; j++)            {                if(MAP[i][j] == '@')                {                    MIN = min(MIN, STEP[0][i][j] + STEP[1][i][j]);                }            }        }        printf("%d\n", MIN * 11);    }    return 0;}/*4 4Y.#@.....#..@..M4 4Y.#@.....#..@#.M5 5Y..@..#....#...@..M.#...#*/


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 久久阅读 久久福门业 成人久久 久久建筑网 久久物流 久久结婚 久久信息 久久传奇 久久鲜花 久久时间 久久九九 久久鸭脖店 相约久久 久久首页 久久精品网站 久久这里只有精品 久久乐这里只有精品 久久这里只精品 久久这里有精品 正宗久久鸭脖培训 久久鸭脖培训学校 久久鸭脖利润高吗 久久鸭脖总部在哪 去哪里学久久鸭脖 学久久鸭脖多少钱 礼意久久送礼网 久久鸭脖利润 久久汽车美容学校 久久鸭脖制作方法 久久鸭脖培训多少钱 久久鸭脖子怎么做 久久鸭脖是哪里的 久久鸭脖怎么做的 正宗久久鸭脖王 久久汽车美容装潢 幸福久久婚礼学院 久久鸭脖都有什么 久久鸭脖子的做法 久久鸭脖王技术培训 礼意久久 生日礼物 唯爱久久旗舰店