这个专题的最后一道题目了....
应该说的是有两个人计划去KFC碰头,找出来一个最近的KFC让他们俩见面吧,应该是个比较容易的问题,不过需要注意在一个Bfs里面搜的话,别把两个人弄混乱了...........................可以在定义的时候使用一个简单的数组标记,我还是是用一个简单的三维数组标记吧,注意求的是两个人在路上用的总时间
////////////////////////////////////////////////

#include<algorithm>

#include<queue>
#include<stdio.h>
#include<string.h>
using namespace std; const int maxn = ;
const int oo = 0xfffffff; struct node{int x, y, op;};//op等于0的时候代表是Y,1代表M
char G[maxn][maxn];
int v[maxn][maxn][];
int M, N;
int dir[][] = { {,},{,},{,-},{-,} }; int Bfs(node s, node q)
{
    queue<node> Q;
    int Min = oo;
    Q.push(s), Q.push(q);
    v[s.x][s.y][s.op] = v[q.x][q.y][q.op] = ;     while(Q.size())
    {
        s = Q.front();Q.pop();         if(G[s.x][s.y] == '@' && v[s.x][s.y][] && v[s.x][s.y][])
            Min = min(Min, v[s.x][s.y][]+v[s.x][s.y][]);         for(int i=; i<; i++)
        {
            q = s;
            q.x += dir[i][], q.y += dir[i][];             if(q.x>=&&q.x<M && q.y>=&&q.y<N && G[q.x][q.y] != '#' && v[q.x][q.y][q.op]==)
            {
                v[q.x][q.y][q.op] = v[s.x][s.y][s.op] + ;
                Q.push(q);
            }
        }
    }     return Min-;
} int main()
{
    while(scanf("%d%d", &M, &N) != EOF)
    {
        node s, q;
        int i, j;         for(i=; i<M; i++)
        {
            scanf("%s", G[i]);
            for(j=; j<N; j++)
            {
                if(G[i][j] == 'Y')
                    s.x = i, s.y = j, s.op=;
                if(G[i][j] == 'M')
                    q.x = i, q.y = j, q.op=;
            }
        }         memset(v, , sizeof(v));         int ans = Bfs(s, q);         printf("%d\n", ans*);
    }     return ;
}

随机推荐

  1. 数据挖掘相关的10个问题[ZZ]

    NO.1 Data Mining 和统计分析有什么不同? 硬要去区分Data Mining和Statistics的差异其实是没有太大意义的.一般将之定义为Data Mining技术的CART.CHAI ...

  2. Codeforces 543B Destroying Roads(最短路)

    题意: 给定一个n个点(n<=3000)所有边长为1的图,求最多可以删掉多少条边后,图满足s1到t1的距离小于l1,s2到t2的距离小于l2. Solution: 首先可以分两种情况讨论: 1: ...

  3. javascript-处理XML

    /** * Created by Administrator on 2015/4/4. */ var XmlUtil=(function () { var createDocument= functi ...

  4. javascript——事件处理

    <script type="text/javascript"> function EventUtil() { var _self = this; ///添加事件 var ...

  5. 『重构--改善既有代码的设计』读书笔记----Move Method

    明确函数所在类的位置是很重要的.这样可以避免你的类与别的类有太多耦合.也会让你的类的内聚性变得更加牢固,让你的整个系统变得更加整洁.简单来说,如果在你的程序中,某个类的函数在使用的过程中,更多的是在和 ...

  6. linux 获取cpu百分比

    vmstat 1 |head -n 4 |tail -n 1 |awk '{print $13}'

  7. ecshop分页问题1

    点解下一页时弹出 查找原因: json返回 分页查询之后返回的 filter 数据为空 问题在这: $deliveryInfo['fliter']  $deliveryInfo['page_count ...

  8. Javascript 访问网页弹出qq

    先在网页的正文结束位置 加上引用代码 代码如下 <SCRIPT type="text/javascript" src="/QQ.js"></S ...

  9. Why is 0[0] syntactically valid in javascript?

    Why is 0[0] syntactically valid in javascript? 原文链接 偶然在一篇帖子中看到了这个问题,所以打算记录一下. var a = 0[0]; console. ...

  10. 七天学会SALTSTACK自动化运维 (2)

    七天学会SALTSTACK自动化运维 (2) 导读 Grains Pillar 总结 参考链接 导读 上一篇主要介绍了安装和基本的使用方法,但是我认为如果理解了相关概念的话,使用会更加顺手,因为毕竟每 ...