码迷,mamicode.com
首页 > 其他好文 > 详细

【题解】穿越泥地

时间:2019-03-30 01:16:22      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:push   none   color   输入   最短路   queue   看到了   iostream   bsp   

题目描述

        清早6:00,Farmer John就离开了他的屋子,开始了他的例行工作:为Bessie挤奶。前一天晚上,整个农场刚经受过一场瓢泼大雨的洗礼,于是不难想象,FJ现在面对的是一大片泥泞的土地。FJ的屋子在平面坐标(0,0)的位置,Bessie所在的牛棚则位于坐标(X,Y)(-500≤X≤500;-500≤Y≤500)处。当然咯,FJ也看到了地上的所有N(1≤N≤10000)个泥塘,第i个泥塘的坐标为(A_i,B_i)(-500≤A_i≤500;-500≤B_i≤500)。每个泥塘都只占据了它所在的那个格子。

        Farmer John自然不愿意弄脏他新买的靴子,但他同时想尽快到达贝茜所在的位置。为了数那些讨厌的泥塘,他已经耽搁了一些时间了。如果Farmer John只能平行于坐标轴移动,并且只在x、y均为整数的坐标处转弯,那么他从屋子门口出发,最少要走多少路才能到贝茜所在的牛棚呢?你可以认为从FJ的屋子到牛棚总是存在至少一条不经过任何泥塘的路径。

 

输入输出格式

输入格式

        第一行,3个用空格隔开的整数:X,Y和N;

        第二至第N+1行,第i+1行为2个用空格隔开的整数:A_i和B_i。

 

输出格式

        一行,输出一个整数,即FJ在不踏进泥塘的情况下,到达贝茜所在牛棚所需要走过的最小距离。

 

输入输出样例

输入样例

1 2 7

0 2

-1 3

3 1

1 1

4 2

-1 1

2 2

 

输出样例

11

 

题解

        根据求最短路径可以得到是bfs,直接暴力即可。

技术图片
#include <iostream>
#include <queue>>
#define MAXN 10001

using namespace std;

const int dx[4] = {-1,1,0,0}, dy[4] = {0,0,-1,1};
int x, y, n;
int a[1010][1010];
queue<int> qx, qy;

int main()
{
    cin >> x >> y >> n;
    a[x + 501][y + 501] = 1;
    for(register int i = 1, tmpx, tmpy; i <= n; i++)
    {
        cin >> tmpx >> tmpy;
        a[tmpx + 501][tmpy + 501]= -1;
    }
    qx.push(501);
    qy.push(501);
    int ans = 0;
    while(!qx.empty()) 
    {
        ans++;
        for(int I = qx.size(); I; I--)
        {
            x = qx.front();
            y = qy.front();
            qx.pop();
            qy.pop();
            for(register int i = 0; i < 4; i++)
            {
                if(x + dx[i] < 1 || x + dx[i] > 1001 || y + dy[i] < 1 || y + dy[i] > 1001)
                    continue;
                if(a[x + dx[i]][y + dy[i]] == 1)
                    return cout << ans, 0;
                if(!a[x + dx[i]][y + dy[i]]) 
                    a[x + dx[i]][y + dy[i]] = -1, qx.push(x + dx[i]), qy.push(y + dy[i]);
            }
        }
    }
    return 0;
}
参考程序

 

【题解】穿越泥地

标签:push   none   color   输入   最短路   queue   看到了   iostream   bsp   

原文地址:https://www.cnblogs.com/kcn999/p/10624999.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!