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

J - Borg Maze相关推荐

  1. 【POJ 3026】Borg Maze

    [POJ 3026]Borg Maze 一个考察队搜索alien 这个考察队能够无限切割 问搜索到全部alien所须要的总步数 即求一个无向图 包括全部的点而且总权值最小(最小生成树 BFS+最小生成 ...

  2. Borg Maze最小生成树

    Borg Maze 原题链接https://vjudge.net/contest/352170#problem/I 本题给出一个地图,以及各个点的位置,大概意思就是所有点全部链接的最短路径,使用bfs ...

  3. Borg Maze (最小生成树+bfs)

    Borg Maze 题目描述: The Borg is an immensely powerful race of enhanced humanoids from the delta quadrant ...

  4. (POJ 3026) Borg Maze 最小生成树+bfs

    题目链接:http://poj.org/problem?id=3026. DescriptionThe Borg is an immensely powerful race of enhanced h ...

  5. 【POJ - 3026】Borg Maze(bfs预处理 + 最小生成树,建图)

    题干: The Borg is an immensely powerful race of enhanced humanoids from the delta quadrant of the gala ...

  6. (最小生成树) Borg Maze -- POJ -- 3026

    链接: http://poj.org/problem?id=3026 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82831#probl ...

  7. 一道神坑题 POJ3026 Borg Maze BFS+prim算法

    题意不说 附上链接 http://poj.org/problem?id=3026 反正先用BFS搜一遍图 记录 S和A之间的路 用一个二维数组存储 (注意 把每个S或者A 都搜一遍) 好了 剩下的就是 ...

  8. poj 3026 Borg Maze (最小生成树+bfs)

    有几个错误,调试了几个小时,样例过后 1Y. 题目:http://poj.org/problem?id=3026 题意:就是让求A们和S的最小生成树 先用bfs找每两点的距离,再建树.没剪枝 63MS ...

  9. Borg Maze POJ - 3026 (BFS + 最小生成树)

    题意: 求把S和所有的A连贯起来所用的线的最短长度... 这道题..不看discuss我能wa一辈子... 输入有坑... 然后,,,也没什么了...还有注意 一次bfs是可以求当前点到所有点最短距离 ...

最新文章

  1. python买什么书-有什么关于python的书值得阅读?
  2. 模型剖析 | 如何解决业务运维的四大难题?
  3. PHP使用PDO方式的经验总结:连接 增删改查
  4. MySQL数据库常见的几个问题
  5. C++语言基础 —— STL —— 容器与迭代器 —— heap
  6. FastJSON、Gson和Jackson性能对比
  7. vonic 环境配置_Vonic 2.0 全新文档站上线
  8. 基于GitHub创建自己的个人网站
  9. 面试问题记录 2019.3.22(中国铁道科学研究院)
  10. 基于HTML5的iPad电子杂志横竖屏自适应方案
  11. web开发时碰到的问题以及心得经验
  12. html微信窗口阻止滚动条,微信浏览器禁止页面下拉查看网址(不影响页面内部scroll)...
  13. 《21天学通Java(第6版)》—— 1.10 练习
  14. 【新书推荐】【2018.07】计算电磁学的MATLAB仿真(第四版)
  15. ABBYY软件的OCR文字识别工具有什么用
  16. Excel查看工作表有多少列
  17. 企业python面试题
  18. (个人翻译)Scrivener交互式手册中文版FowWindows 03基础操作
  19. 计算机毕业设计之java+ssm学生网上请假系统
  20. Linux-常用快捷键

热门文章

  1. r语言转化为python_数值型与字符型转换总结|R语言
  2. pyplot绘制图片_matplotlib系列之pyplot
  3. mysql动态sql是什么,mysql中动态sql的一次实际应用
  4. 开课吧java_开课吧javaee企业级开发工程师 十期
  5. android横向展示状态,【报Bug】Android横屏状态下启动App,即使在App.vue中锁定竖屏,但是首页nvue中的rpx单位是按照启动的横竖屏状态显示的!...
  6. python与tensorflow知识点截图集锦(持续囤积)
  7. ruby array_Ruby中带有示例的Array.select方法
  8. java中intvalue_Java Number intValue()方法与示例
  9. C++---两数之和
  10. 博客上一些项目相关源码链接