codevs3410 别墅房间

题目描述 Description

小浣熊松松到他的朋友家别墅去玩,发现他朋友的家非常大,而且布局很奇怪。具体来说,朋友家的别墅可以被看做一个N*M的矩形,有墙壁的地方被标记为’#’,其他地方被标记为’.’。两个格子(a,b)和(c,d)被当做在同一个房间内,当且仅当|a-c|+|b-d|=1。现在松松想知道,有多少个房间。

输入描述 Input Description

第一行包含两个整数,N和M。

接下来N行描述别墅的情况,只包含’*’和’.’。

输出描述 Output Description

输出仅一行,为房间数。

样例输入 Sample Input

3 3

.#.

#.#

.#.

样例输出 Sample Output

5

数据范围及提示 Data Size & Hint

对于90%的数据,1<=N,M<=1000;

对于100%的数据,1<=N,M<=2000。

思路:

bfs求连通块

代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>

using namespace std;
const int maxn = 2005;
int j[maxn][maxn],room[maxn][maxn];
long long int total = 0,m,n;
struct pos{
    int x;
    int y;
};
pos q[4000000];
pos dir[4];

int bfs(int y,int x){
    int h = 0,t = 0;
    q[0].y = y;
    q[0].x = x;
    int tx,ty;
    while(h <= t){

        int r3 = 0;
        for(r3 = 0;r3 <  4;r3++){
            x = q[h].x;
            y = q[h].y;
            tx = dir[r3].x;
            ty = dir[r3].y;
            if(y + ty >= 0 && y + ty < n && x + tx >= 0 && x + tx < m && room[y + ty][x + tx] && j[y + ty][x + tx]){
                t++;
                q[t].y = y + ty;
                q[t].x = x + tx;
                j[y + ty][x + tx] = 0;
                total--;
            }
        }
        h++ ;
    }
}

int main(){
    cin>>n>>m;
    dir[0].x = -1;dir[0].y = 0;
    dir[1].x = +1;dir[1].y = 0;
    dir[2].x = 0;dir[2].y = -1;
    dir[3].x = 0;dir[3].y = +1;
    char cmd;
    int r1 = 0,r2 = 0,temp = -1;
    for(r1 = 0;r1 < n;r1++){
        for(r2 = 0;r2 < m;r2++){
            cin>>cmd;
            if(cmd == ‘.‘) {
            j[r1][r2] = 1;
            room[r1][r2] = 1;
            total++;
        }else if(cmd == ‘#‘){
            j[r1][r2] = 1;
            room[r1][r2] = 0;
        }
        }
    }
    r1 = r2 =0;
    for(r1 = 0;r1 < n;r1++){
        for(r2 = 0;r2 < m;r2++){
            if(room[r1][r2] && j[r1][r2]){
                j[r1][r2] = 0;
                bfs(r1,r2);
            }

        }
    }
    cout<<total;
    return 0;
}
时间: 2024-11-15 07:01:26

codevs3410 别墅房间的相关文章

广搜——连通块

Wikioi 3410 别墅房间 题目描述 Description 小浣熊松松到他的朋友家别墅去玩,发现他朋友的家非常大,而且布局很奇怪.具体来说,朋友家的别墅可以被看做一个N*M的矩形,有墙壁的地方被标记为’#’,其他地方被标记为’.’.两个格子(a,b)和(c,d)被当做在同一个房间内,当且仅当|a-c|+|b-d|=1.现在松松想知道,有多少个房间. 输入描述 Input Description 第一行包含两个整数,N和M. 接下来N行描述别墅的情况,只包含’*’和’.’. 输出描述 Ou

老两口收回儿子别墅,有钱人为啥都不爱住别墅了?秦皇岛威曼斯看天下

今天我们这些买不起房的人,来聊一聊别墅...... 这天,杭州钱塘公证处值班室出现这样一幅画面:一对父母数落儿子,义愤填膺. "不肖子!宁可多交60万税也要敲打你." "儿子这么大了,只知道花天酒地,用钱大手大脚,也不结婚--" "我真担心,哪一天他把房子都送人了怎么办哦--" 因为不满儿子挥霍无度,爸妈决定来办公证,把先前送儿子的别墅转赠回自己名下.这位儿子倒是好脾气,笑笑说:"爸爸妈妈,房子送回给你们,你们把税交了就行."

[贪心][前缀和] JZOJ P1795 教主的别墅

Description [题目背景] LHX教主身为宇宙第一富翁,拥有一栋富丽堂皇的别墅,由于别墅实在太大了,于是教主雇佣了许许多多的人来负责别墅的卫生工作,我们不妨称这些人为LHXee. [题目描述] 教主一共雇佣了N个LHXee,这些LHXee有男有女. 教主的大别墅一共有M个房间,现在所有的LHXee在教主面前排成了一排.教主要把N个LHXee分成恰好M个部分,每个部分在队列中都是连续的一段,然后分别去打扫M个房间. 教主身为全世界知识最渊博的人,他当然知道男女搭配干活不累的道理,以及狼多

sql 从房间号中或从含有几个&quot;-&quot;间隔的字符串中,截取楼层数,或截取第几个&quot;-&quot;后的前几个字符或数字

代号(房间号) 代号 1-1-101 1-5-502 15-3-2001 根据代号房间号截取后的楼层为 楼层 1 5 20 SELECT CASE WHEN len(RIGHT(代号, CHARINDEX('-', REVERSE(代号)) - 1))       = 3 THEN LEFT(RIGHT(代号, CHARINDEX('-', REVERSE(代号)) - 1), 1)       ELSE LEFT(RIGHT(代号, CHARINDEX('-', REVERSE(代号)) -

codevs 2072 分配房间

2072 分配房间 二分 1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 #define maxn 1000000 5 #define LL long long 6 7 LL n,m,num[maxn],ans; 8 9 inline void read(LL &now) 10 { 11 char ch=getchar(); now=0; 12 while(ch>'9'||ch<

房间安排

描述 2010年上海世界博览会(Expo2010),是第41届世界博览会.于2010年5月1日至10月31日期间,在中国上海市举行.本次世博会也是由中国举办的首届世界博览会.上海世博会以“城市,让生活更美好”(Better City,Better Life)为主题,将充分探索21世纪城市生活. 这次世博会总投资达450亿人民币,创造了世界博览会史上的最大规模记录.吸引200个国家和国际组织参展.预计有7000万人次的参观者. 为了更好地接待在这期间来自世界各地的参观者,如何合理安排各宾馆的住房问

网狐荣耀版房卡游戏在手机客户端不出现房卡房间

最近,有个别网友找我,的架设网狐荣耀版游戏时,服务器端开了房卡房间,但是在手机端没有房间显示,更不用谈进入房间了.经查,程序没有问题,相同的源码,相同的环境配置,就是不出现房卡房间,最后我也是无语了.我告诉他,你人品有问题.但是问题还是得查出原因.经过详细的分析研究,最后是他电脑CPU的问题.费了十天的时间,经历了太多的误解与磨难.真不容易.

用UE4来做Zego即构的房间列表

Zego即构是一家做直播的服务商,Zego即构自己的房间列表,本文只是测试功能用,相应代码并没完全测试,请选择性参考. 我们在UE4中来实现一下,我感觉这个过程有点意思,UE4中C++与蓝图和UI的互相通信基本全部用到了. Zego即构没有专门的UE4插件,所以我们主要逻辑全部在C++中,蓝图只是辅助. 首先,我们定义一个房间结构,因为要想UE4中C++和蓝图可见可用,我们要用C++实现,并实现特定的写法让蓝图知道. USTRUCT(BlueprintType) struct FRoomBlue

学习.net core mvc 做的一个在线房间棋牌游戏微信支付和及时通讯简易框架

项目名称:游戏城(GameCitysSystem) 源代码github地址:https://github.com/antdesigner/appleGameSVN 开发工具:vs2017 数据库:mysql5.7 因为项目目前不完善,有一些注意事项 利用 "applegameData.sql" 文件初始化mysql数据库,数据库名称为 applegame 连接字符串在appsettings对应文件ConnectionStrings节点中配置 访问地址为: http://127.0.0: