J - Borg Maze

J - Borg Maze

思路:bfs+最小生成树。
#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 110
using namespace std;
int fa[MAXN];
struct nond{int x,y,z;
}v[MAXN*MAXN];
struct none{int x,y,z;
};
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
int t,n,m,tot,sum,ans,point;
int map[MAXN][MAXN],vis[MAXN][MAXN];
void bfs(int x,int y){queue<none>que;none s;s.x=x;s.y=y;s.z=0;memset(vis,0,sizeof(vis));vis[x][y]=1;que.push(s);int k=1;while(!que.empty()){none now=que.front();que.pop();for(int i=0;i<4;i++){int cx=now.x+dx[i];int cy=now.y+dy[i];int cz=now.z+1;if(cx>=1&&cx<=n&&cy>=1&&cy<=m&&map[cx][cy]>=0&&!vis[cx][cy]){if(map[cx][cy]>0){ v[++tot].x=map[x][y];v[tot].y=map[cx][cy];v[tot].z=cz;k++; }if(k==point)    return ;none tmm;tmm.x=cx;tmm.y=cy;tmm.z=cz;vis[cx][cy]=1;que.push(tmm);}}}
}
int cmp(nond a,nond b){return a.z<b.z;
}
int find(int x){if(fa[x]==x)    return x;else return fa[x]=find(fa[x]);
}
int main(){scanf("%d",&t);char tmp[MAXN];while(t--){scanf("%d%d",&m,&n);gets(tmp);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){char x;scanf("%c",&x);if(x=='#') map[i][j]=-1;else if(x==' ')    map[i][j]=0;else map[i][j]=++point;}char c;scanf("%c",&c);}for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(map[i][j]>0)    bfs(i,j);sort(v+1,v+1+tot,cmp);for(int i=1;i<=point;i++)    fa[i]=i;for(int i=1;i<=tot;i++){int dx=find(v[i].x);int dy=find(v[i].y);if(dx==dy)    continue;fa[dy]=dx;sum++;ans+=v[i].z;if(sum==point-1)    break;}cout<<ans<<endl;ans=0;tot=0;sum=0;point=0;}
}

 

转载于:https://www.cnblogs.com/cangT-Tlan/p/8463208.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/390159.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1095. 山脉数组中查找目标值

1095. 山脉数组中查找目标值 &#xff08;这是一个 交互式问题 &#xff09; 给你一个 山脉数组 mountainArr&#xff0c;请你返回能够使得 mountainArr.get(index) 等于 target 最小 的下标 index 值。 如果不存在这样的下标 index&#xff0c;就请返回 -1。 何为山脉数组…

【小摘抄】关于C++11下 string各类用法(持续更新)

http://blog.csdn.net/autocyz/article/details/42391155 提供了最简单的详解 下列对本人近期开发中的一些心得体会进行摘抄 1.string按照字符进行截取 示例代码&#xff1a; string teststring "#12313#kajlkfdsa";//通讯消息示例&#xff0c;结合string的内置函数…

sql综合练习题

一、表关系 年级表&#xff1a;class_grade create table class_grade(gid int primary key auto_increment,gname varchar(20) not null); insert into class_grade(gname) values(一年级),(二年级),(三年级); 班级表&#xff1a;class create table class(cid int primary ke…

javascript原型_在JavaScript中冻结原型时会发生什么

javascript原型Have you wondered what happens when you freeze the prototype of an object? Lets find out together.您是否想过冻结对象的原型时会发生什么&#xff1f; 让我们一起找出答案。 对象 (Objects) In JavaScript, objects are dynamic collections of propert…

迟来的2017总结

明天就是年后第一天上班了&#xff08;过年期间请了6天假&#xff09;&#xff0c; 打算今天写一下2017的总结&#xff0c;本来还想写2018的愿景的&#xff0c;不过想想还是算了&#xff0c;现在没什么想法&#xff0c;不想敷衍了事。 先贴一个2017的提升计划&#xff1a; http…

tomcat启动卡住

新部署的项目启动tomcat后一直停在org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.16&#xff0c;卡在了org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/web…

怎样准备阿里技术面试_如何准备技术面试

怎样准备阿里技术面试In June 2020 I watched an inspiring talk by Anthony D. Mays, a technical coach and founder at Morgan Latimerco. He came on a Facebook Developer Circles Benin live session and talked about how to prepare for a technical interview. 2020年…

通过一个简单例子理解 RecyclerView.ItemDecoration

一、前言 RecyclerView 是从5.0推出的 MD 风格的控件。RecyclerView 之前有 ListView、GridView&#xff0c;但是功能很有限&#xff0c;例如 ListView 只能实现垂直方向上的滑动等。但是存在则合理&#xff0c;ListView 却没有被官方标记为 Deprecated&#xff0c;有兴趣的同学…

Entity Framework Logging and Intercepting Database Operations (EF6 Onwards)

参考官方文档&#xff1a;https://msdn.microsoft.com/en-us/library/dn469464(vvs.113).aspx转载于:https://www.cnblogs.com/liandy0906/p/8473110.html

面试题 17.14. 最小K个数

面试题 17.14. 最小K个数 设计一个算法&#xff0c;找出数组中最小的k个数。以任意顺序返回这k个数均可。 示例&#xff1a; 输入&#xff1a; arr [1,3,5,7,2,4,6,8], k 4 输出&#xff1a; [1,2,3,4] 提示&#xff1a; 0 < len(arr) < 1000000 < k < min(1…

这是您现在可以免费获得的115张Coursera证书(在冠状病毒大流行期间)

At the end of March, the world’s largest Massive Open Online Course provider Coursera announced that they are offering 100 free courses in response to the impact of the COVID-19 pandemic. 3月底&#xff0c;全球最大的大规模在线公开课程提供商Coursera 宣布 &a…

由浅入深理解----java反射技术

java反射机制详解 java反射机制是在运行状态下&#xff0c;对任意一个类可以获取该类的属性和方法&#xff0c;对任意一个对象可以调用其属性和方法。这种动态的获取信息和调用对象的方法的功能称为java的反射机制 class<?>类&#xff0c;在java.lang包下面&#xff0c;…

【VMware vSAN 6.6】5.5.Update Manager:vSAN硬件服务器解决方案

目录 1. 简介 1.1.适用于HCI的企业级存储2. 体系结构 2.1.带有本地存储的服务器2.2.存储控制器虚拟系统套装的缺点2.3.vSAN在vSphere Hypervisor中自带2.4.集群类型2.5.硬件部署选项3. 启用vSAN 3.1.启用vSAN3.2.轻松安装3.3.主动测试4. 可用性 4.1.对象和组件安置4.2.重新构建…

5848. 树上的操作

给你一棵 n 个节点的树&#xff0c;编号从 0 到 n - 1 &#xff0c;以父节点数组 parent 的形式给出&#xff0c;其中 parent[i] 是第 i 个节点的父节点。树的根节点为 0 号节点&#xff0c;所以 parent[0] -1 &#xff0c;因为它没有父节点。你想要设计一个数据结构实现树里面…

了解如何通过Python使用SQLite数据库

SQLite is a very easy to use database engine included with Python. SQLite is open source and is a great database for smaller projects, hobby projects, or testing and development.SQLite是Python附带的非常易于使用的数据库引擎。 SQLite是开源的&#xff0c;是用于…

32位JDK和64位JDK

32位和64位系统在计算机领域中常常提及&#xff0c;但是仍然很多人不知道32位和64位的区别&#xff0c;所以本人在网上整理了一些资料&#xff0c;并希望可以与大家一起分享。对于32位和64位之分&#xff0c;本文将分别从处理器&#xff0c;操作系统&#xff0c;JVM进行讲解。 …

中小企业如何选择OA协同办公产品?最全的对比都在这里了

对于中小企业来说&#xff0c;传统的OA 产品&#xff0c;如泛微、蓝凌、致远、华天动力等存在价格高、使用成本高、二次开发难等特点&#xff0c;并不适合企业的协同管理。 国内OA市场也出现了一批轻便、低价的OA产品&#xff0c;本文针对以下几款适合中小企业的OA产品在功能、…

python缓冲区_如何在Python中使用Google的协议缓冲区

python缓冲区When people who speak different languages get together and talk, they try to use a language that everyone in the group understands. 当说不同语言的人聚在一起聊天时&#xff0c;他们会尝试使用小组中每个人都能理解的语言。 To achieve this, everyone …

PowerDesigner16中的对象无效,不允许有扩展属性 问题的解决

PowerDesigner16中的对象无效&#xff0c;不允许有扩展属性 消息 15135&#xff0c;级别 16&#xff0c;状态 1&#xff0c;过程 sp_addextendedproperty&#xff0c;第 37 行 对象无效。XXXXXXX 不允许有扩展属性&#xff0c;或对象不存在。 把 execute sp_addextendedpropert…

Elasticsearch学习(2)—— 常见术语

为什么80%的码农都做不了架构师&#xff1f;>>> cluster (集群)&#xff1a;一个或多个拥有同一个集群名称的节点组成了一个集群。每个集群都会自动选出一个主节点&#xff0c;如果该主节点故障&#xff0c;则集群会自动选出新的主节点来替换故障节点。 node (节点…