链接:poj 3026

题意:y行x列的迷宫中,#代表阻隔墙(不可走)。空格代表空位(可走)。S代表搜索起点(可走),A代表目的地(可走),如今要从S出发,每次可上下左右移动一格到可走的地方。求到达全部的A的路线总距离最小值

分析:能够先用bfs从上下左右四个方向将全部的A,S两两之间的最短距离,题目的目的是将S与全部的A连通,使得总距离最小,所以任选一点開始按最小生成树的算法做即可,并不是非要从S点開始

注:题目输入x,y后可能有非常多空格,能够用gets将多余的空格取走,开数组是尽量开大点。之前尽管开的比题目数据稍大,但一直错,改大就AC了、、、题目数据不忍直视

#include<cstdio>
#include<queue>
#include<algorithm>
#include<cstring>
using namespace std;
const int dx[]={1,0,-1,0};
const int dy[]={0,1,0,-1};
int m,n,x,y,f[1050],num[1050][1050];       //之前都是105
struct point
{int i,j;
}a[1050];
struct stu
{int a,b,c;
}t[100500];            //之前开的10050
char s[100][100];
int cmp(struct stu x1,struct stu x2)
{return x1.c<x2.c;
}
void bfs(int star)
{int i,j,k,dis[100][100],v[100][100];queue<struct point> q;struct point d;memset(dis,0,sizeof(dis));memset(v,0,sizeof(v));q.push(a[star]);v[a[star].i][a[star].j]=1;while(!q.empty()){d=q.front();q.pop();i=d.i;j=d.j;if(s[i][j]=='A'||s[i][j]=='S'){t[m].a=star;t[m].b=num[i][j];t[m++].c=dis[i][j];}for(k=0;k<4;k++){d.i=i+dx[k];d.j=j+dy[k];if(d.i>=0&&d.i<y&&d.j>=0&&d.j<x&&!v[d.i][d.j]&&s[d.i][d.j]!='#'){q.push(d);v[d.i][d.j]=1;dis[d.i][d.j]=dis[i][j]+1;}}}
}
int find(int r)
{if(r!=f[r])f[r]=find(f[r]);return f[r];
}
int krus()
{int i,k=0,sum=0,l,r;for(i=1;i<m;i++){l=find(t[i].a);r=find(t[i].b);if(l!=r){sum+=t[i].c;k++;if(k==n-1)break;f[l]=r;}}return sum;
}
int main()
{int N,i,j,sum;char c[55];scanf("%d",&N);while(N--){scanf("%d%d",&x,&y);gets(c);             //将多余空格取走n=1;for(i=0;i<y;i++){gets(s[i]);for(j=0;j<x;j++)if(s[i][j]=='A'||s[i][j]=='S'){a[n].i=i;                //存A或S的坐标a[n].j=j;                num[i][j]=n++;            //存点的序号}}n--;m=1;for(i=1;i<=n;i++){f[i]=i;              //初始化父节点bfs(i);              //求以i为一个顶点的全部边的权值}sort(t+1,t+m,cmp);sum=krus();printf("%d\n",sum);}return 0;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

poj 3026 Borg Maze (bfs + 最小生成树)相关推荐

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

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

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

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

  3. POJ - 3026(BFS+最小生成树.krustal)

    题目: 题目链接: http://poj.org/problem?id=3026 Borg Maze Time Limit: 1000MS   Memory Limit: 65536K Total S ...

  4. 【POJ 3026】Borg Maze

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

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

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

  6. Borg Maze最小生成树

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

  7. poj3206(bfs+最小生成树)

    传送门:Borg Maze 题意:有一个迷宫,里面有一些外星人,外星人用字母A表示,#表示墙,不能走,空格可以走,从S点出发,在起点S和A处可以分叉走,问找到所有的外星人的最短路径是多少? 分析:分别 ...

  8. J - Borg Maze

    J - Borg Maze 思路:bfs+最小生成树. #include<queue> #include<cstdio> #include<cstring> #in ...

  9. POJ 3414 Pots【BFS】+ Python

    原题链接: 3414 -- Pots 参考资料:POJ 3414 - Pots | 眈眈探求 POJ 3414 Pots[BFS][图搜] - it610.com 一 特别注意: 1. 每一种操作对应 ...

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

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

最新文章

  1. 基于OpenCV修复表格缺失的轮廓--如何识别和修复表格识别中的虚线
  2. 电梯维修属于什么服务器,电梯维修属于建筑服务中的修缮服务吗?
  3. H - Message Bomb Gym - 102798H
  4. thinking-in-java(16) 数组
  5. Android官方开发文档Training系列课程中文版:分享文件之配置文件共享
  6. 差分进化算法python_差分进化算法DE-python实现
  7. 三星中文AI助手Bixby发布,现在,这是“一家AI商用技术公司”
  8. 集成hello到OpenDaylight发行版中
  9. Zotero 安装 插入引用
  10. dynamips中网卡参数如何和网络连接中的具体网卡匹配
  11. 机器人时代已来!推荐几本机器人学硬核好书
  12. 计算机组成原理-总线(系统总线、总线仲裁、总线操作和定时)
  13. 【Paper】A Comprehensive Survey of Clustering Algorithms
  14. 手机上的截图文字识别功能还有多少人不知道!
  15. 网站盈利有哪些模式?
  16. 【硬核技术文】研发绩效,AI算法的完美舞台
  17. android 图片画圆,在Android中画圆形图片的几种办法
  18. Chapter 8 Part-of-Speech Tagging
  19. OpenLayer仿天地图多时相
  20. 说好的团队为质量负责呢?

热门文章

  1. Node.js安装和入门 - 2行代码让你能够启动一个Server
  2. 谈谈对网站性能优化的认识
  3. 系统调用服务号 linux 2.6.32
  4. Angular——Angular 教程
  5. 车牌识别LPR(八)-- 字符识别
  6. BS CS 优缺点比较 及 适应场合 (部分转载+个人见解)
  7. 符号“”和const在函数里不同位置的用法
  8. 【第40题】2019年OCP认证12C题库062考试最新考试原题
  9. 19.12添加自定义监控项目19.13/19.14 配置邮件告警19.15 测试告警19.16 不发邮件的问题处理...
  10. JEECG支付服务窗平台与服务窗接口对接文档