codevs1002 搭桥
有一矩形区域的城市中建筑了若干建筑物,如果某两个单元格有一个点相联系,则它们属于同一座建筑物。现在想在这些建筑物之间搭建一些桥梁,其中桥梁只能沿着矩形的方格的边沿搭建,如下图城市1有5栋建筑物,可以搭建4座桥将建筑物联系起来。城市2有两座建筑物,但不能搭建桥梁将它们连接。城市3只有一座建筑物,城市4有3座建筑物,可以搭建一座桥梁联系两栋建筑物,但不能与第三座建筑物联系在一起。
在输入的数据中的第一行包含描述城市的两个整数r 和c, 分别代表从北到南、从东到西的城市大小(1 <= r <= 50 and 1 <= c <= 50). 接下来的r 行, 每一行由c 个(“#”)和(“.”)组成的字符. 每一个字符表示一个单元格。“#”表示建筑物,“.”表示空地。
在输出的数据中有两行,第一行表示建筑物的数目。第二行输出桥的数目和所有桥的总长度。
样例1
3 5
#...#
..#..
#...#
样例2
3 5
##...
.....
....#
样例3
3 5
#.###
#.#.#
###.#
样例4:
3 5
#.#..
.....
....#
样例1
5
4 4
样例2
2
0 0
样例3
1
0 0
样例4
3
1 1
见描述
/* MST,建图略麻烦 */ #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #define ll long long #define fo(i,l,r) for(int i = l;i <= r;i++) #define fd(i,l,r) for(int i = r;i >= l;i--) using namespace std; const int N = 25005; ll read(){ll x=0,f=1;char ch=getchar();while(!(ch>='0'&&ch<='9')){if(ch=='-')f=-1;ch=getchar();};while(ch>='0'&&ch<='9'){x=x*10+(ch-'0');ch=getchar();};return x*f; } struct edge{int u;int v;int w;friend bool operator < (edge a,edge b){return a.w < b.w;} }e[N*3]; int n,m,fa[N]; char mp[105][105]; int cnt,ans1,ans2,ans3; bool judge(int y,int x){if(y < 1 || y > n || x < 1 || x > m || mp[y][x] != '#') return false;return true; } void input(){n =read();m =read();char tmp;fo(i,1,n){fo(j,1,m){tmp = getchar();while(tmp !='.' && tmp != '#') tmp = getchar();mp[i][j] = tmp;if(tmp == '#') ans1++;}} } inline int jdz(int x){if(x<0)x=-x;return x; } inline void ins(int y1,int x1,int y2,int x2){cnt++;e[cnt].u = (y1-1)*m + x1;e[cnt].v = (y2-1)*m + x2;e[cnt].w = jdz(y1-y2) + jdz(x1-x2);if(y1 != y2) e[cnt].w--;if(x1 != x2) e[cnt].w--;//cout<<y1<<" "<<x1<<" "<<y2<<" "<<x2<<" "<<e[cnt].w<<endl; } void build(){fo(i,1,n){fo(j,1,m){if(mp[i][j] != '#') continue;fo(k,j+1,m){if(judge(i,k)) ins(i,j,i,k);if(judge(i+1,k)) ins(i,j,i+1,k);if(judge(i-1,k)) ins(i,j,i-1,k);}fo(k,i+1,n){if(judge(k,j)) ins(i,j,k,j);if(judge(k,j+1)) ins(i,j,k,j+1);if(judge(k,j-1)) ins(i,j,k,j-1);}}}} int findf(int x){return x == fa[x] ? x : fa[x] = findf(fa[x]); } void mst(){sort(e+1,e+1+cnt);fo(i,1,N-10) fa[i] = i;int u,v;fo(i,1,cnt){u = e[i].u;v = e[i].v;u = findf(u);v = findf(v);if(u != v){fa[u] = v;if(!e[i].w)ans1--;if(e[i].w)ans2++;ans3 += e[i].w;}}cout<<ans1<<endl<<ans2<<" "<<ans3; } int main(){input();build();mst();return 0; }
转载于:https://www.cnblogs.com/hyfer/p/6035592.html
codevs1002 搭桥相关推荐
- Premiere Pro2.0用DebugMode2.3搭桥小日本4.0输出图解
看图说话,不懂的多试试看 首先明确几点: 1.3个软件:Premiere Pro2.0.DebugMode(帧服务器).小日本(TMPGEnc 4.0 XPress) 2.渲染过程是在小日本中完成,与 ...
- codevs 1002 搭桥
codevs 第一道题 先贴描述 1002 搭桥 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 有一矩 ...
- 借收购搭桥,风河Workbench软件环境涵盖至测试领域
借收购搭桥,风河Workbench软件环境涵盖至测试领域 上网时间 : 2005年03月24日 打 印 版 推 荐 给 同 仁 发 送 查 询 美国风河系统公司(Wind River Sy ...
- 转:为 setuptools 开路搭桥
为 setuptools 开路搭桥 赖勇浩(http://laiyonghao.com) 在 这里,我们有些网站无法访问.其中对我影响比较大的一个就是安装某些 Python 模块的时候,easy_in ...
- Swift 2 中为实存类型和泛型搭桥牵线
本文讲的是Swift 2 中为实存类型和泛型搭桥牵线, 我们又回到了讨论泛型的另一个章节,来讨论泛型,有其他类型的协议和在 Swift 2 中的其他类型的系统限制.这次我们会深入讨论一个有趣的变通方法 ...
- HyperDAO跨链搭桥:启动万链自由交换时代
自2017年以来,HyperDAO 致力为众多区块链项目提供筹募资金服务,目前已经拥有超过 5 万名活跃用户,遍布于 4 0 多个国家.团队相信在"万链竞争"的时代下,未来区块链发 ...
- puzzle(0711)《机关排布》接水管、搭桥
目录 接水管 接水管(跨边) 3D接水管 2*3*3模式 2*4*4模式 3*5*5模式 水管大师 搭桥 7x7 10*10 15*15 接水管 把所有线路全部连起来. 在线play 4*4 1 ...
- 大概是全网最详细的Electron ipc 讲解(二)——渲染进程与渲染进程的搭桥牵线
希沃ENOW大前端 公司官网:CVTE(广州视源股份)[1] 团队:CVTE旗下未来教育希沃软件平台中心enow团队 「本文作者:」 image.png 前言 你盼世界,我盼望你无 bug .Hell ...
- 关于“搭桥”游戏生成随机地图的设计思路
是很久以前写的一个小游戏.名字为:Bridge Puzzle Game. 是一款益智类的小游戏. 游戏链接:http://www.puzzle-bridges.com/ 游戏中最重要的一个功能是随机生 ...
最新文章
- Linux软raid创建和维护
- HALCON双目重建
- python exe文件运行依赖环境_python将py代码文件转换为EXE脱离环境运行
- atheros蓝牙设备驱动 小米_小米Air 13笔记本黑苹果WiFi蓝牙硬件改装方案二
- java编程实现素数环_结对编程(JAVA实现)
- 揭秘!业界创新的代码仓库加密技术
- 学生管理系统服务器端设计,学生信息管理系统设计与实现
- Java+Selenium自动化对非输入框的日历或日期控件的处理
- android+wear+游戏,技术帝:Android Wear手表运行一代PS游戏
- 成为埃森哲阿里巴巴事业部“创始成员”
- HTML5 — 知识总结篇《VII》【图片元素】
- 超大图片(4000×3000像素)的畸变矫正,python+OpenCV实现
- json数组排序,深拷贝,浅拷贝,删除,增加,筛选,
- 2021-5-1电脑配置及组装教程
- 手机怎么识别图中文字?这两个方法靠谱
- 关于mybatis整合spring时报java.lang.NoClassDefFoundError: org/springframework/jdbc/datasource/Trasactionwar
- STM32CubeMX SDRAM的使用(二)
- 9小时突破1000亿,你以为这就是阿里双十一的最大胜利?
- 子数组(Subarray)
- python 数字转换成汉字,Python实现把数字转换成中文
热门文章
- 英特尔更新人工智能产品线,新品性能达到竞品6倍
- 微软推出Python入门课,登上GitHub趋势榜第一
- 原理 msc_解析应用在气象站中的GPRS通信原理及优势
- matlab7.0 win7 64,安装matlab7.0出现问题,我是win7+64位系统,求解
- 大专学完出来学计算机,浙江2021年计算机学校读出来是什么文凭
- 包区别 版本_详解Linux下二进制包、源代码包、rpm包区别与联系
- 微博面试Java,微博java开发工程师面试题整理
- gomarket服务器位置,ANZHI安智市场 Gomarket
- 嵌入式linux硬件成本,嵌入式Linux驱动和固件有何区别?供应商是如何用固件压缩成本的?...
- mysql decode语句_mysql数据灾难恢复方案