这个专题的最后一道题目了....
应该说的是有两个人计划去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. imod报错:error while loading shared libraries: libjpeg.so.62的解决办法

    the file libjpeg.so.62(in /usr/lib/libjpeg.so.62)belongs to the package libjpeg62so try to reinstall ...

  2. CentOS Device eth0 does not seem to be present 解决方案

    1. vi /etc/udev/rules.d/70-persistent-net.rules 记录eth1 的网卡地址 2.vi /etc/sysconfig/network-scrpits/ifc ...

  3. 关于Weblogic 10.3.1集群及调优经历

    一.  集群 ·集群易于管理.灵活的负载平衡.较强的安全机制 ·配置前的规划 操作系统 硬件配置 角色 windows IP: 192.168.1.101:7001 AdminServer windo ...

  4. Oracle数据库之动态SQL

    Oracle数据库之动态SQL 1. 静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:一种为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大 ...

  5. js字符串倒序

    有的时候我们需要把字符串倒序. 比如“范坚强”的倒序就是“强坚范”. 如何对字符串进行倒序呢?你首先想到的方法就是生成一个栈,从尾到头依次取出字符串中的字符压入栈中,然后把栈连接成字符串. var r ...

  6. dedecms织梦建站总结

    说好要每月坚持写博客的,差一点就背弃自己的诺言了. 这一个月,除了修改magento站点和学习android外,一心都投在了为一家建筑公司做网站上去了,使用的是dedecms,我主要做的是前端开发,着 ...

  7. 简述一个javascript简单继承工具的实现原理

    背景 由于本人非常希望能够开发自己的游戏,所以业余时间一直在想着能不能自己一些好玩又有趣的东西出来,最近随着steam上众多独立游戏的爆发,感觉自己又燃烧了起来,所以又拾起了很久以前的一个2d引擎,决 ...

  8. C# 程序性能提升篇-2、类型(字段类型、class和struct)的错误定义所影响性能浅析

    前景提要: 编写程序时,也许你不经意间,就不知不觉的定义了错误的类型,从而发生了额外的性能消耗,从而降低了效率,不要说就发生那么一次两次,如果说是程序中发生了循环.网络程序(不断请求处理的)等这些时候 ...

  9. Unity3d shader内置矩阵

    内置矩阵 支持的矩阵(float4x4):UNITY_MATRIX_MVP        当前模型视图投影矩阵UNITY_MATRIX_MV           当前模型视图矩阵UNITY_MATRI ...

  10. 1. android

    http://blog.csdn.net/mirkerson/article/details/7238815