POJ 3026 Borg Maze bfs+Kruskal
题目链接:http://poj.org/problem?id=3026
感觉英语比题目本身难,其实就是个最小生成树,不过要先bfs算出任意两点的权值。
#include <stdio.h>
#include <string.h>
#include <queue>
#include <algorithm>
using namespace std; char maze[][];
int par[];
struct Point
{
int x, y;
}point[]; struct Edge
{
int u, v, w;
bool operator<(const struct Edge &b)const
{
return w < b.w;
}
}edge[]; struct node
{
int x, y, step;
}; int find_set(int x)
{
return x == par[x] ? x : par[x] = find_set(par[x]);
} queue<struct node>q;
bool vis[][];
int bfs(int x, int y, int ex, int ey)
{
while(!q.empty())q.pop();
memset(vis, , sizeof(vis));
int dir[][] = {{, }, {, -}, {-, }, {, }};
q.push((struct node){x, y, });
vis[x][y] = ;
while(!q.empty())
{
struct node u = q.front();
q.pop();
if(u.x == ex && u.y == ey)
return u.step;
for(int i = ; i < ; i++)
{
if(!vis[u.x+dir[i][]][u.y+dir[i][]] && maze[u.x+dir[i][]][u.y+dir[i][]] != '#')
{
vis[u.x+dir[i][]][u.y+dir[i][]] = ;
q.push((struct node){u.x+dir[i][], u.y+dir[i][], u.step+});
}
}
}
} int main()
{
int t, n, m;
char fuck_space[];
scanf("%d%*c", &t);
while(t--)
{
gets(fuck_space);
sscanf(fuck_space, "%d %d", &m, &n);
int point_rear = ;
for(int i = ; i < n; i++)
{
gets(maze[i]);
for(int j = ; j < m; j++)
if(maze[i][j] == 'S' || maze[i][j] == 'A')
point[point_rear++] = (struct Point){i, j};
}
int edge_rear = ;
for(int i = ; i < point_rear; i++)
{
for(int j = i+; j < point_rear; j++)
{
int w = bfs(point[i].x, point[i].y, point[j].x, point[j].y);
edge[edge_rear++] = (struct Edge){i, j, w};
}
}
int ans = ;
for(int i = ; i < point_rear; i++)
par[i] = i;
sort(edge, edge+edge_rear);
for(int i = ; i < edge_rear; i++)
{
int x = find_set(edge[i].u);
int y = find_set(edge[i].v);
if(x != y)
{
ans += edge[i].w;
par[x] = y;
}
}
printf("%d\n", ans);
}
return ;
}
POJ 3026 Borg Maze bfs+Kruskal的更多相关文章
- poj 3026 Borg Maze (BFS + Prim)
http://poj.org/problem?id=3026 Borg Maze Time Limit:1000MS Memory Limit:65536KB 64bit IO For ...
- POJ - 3026 Borg Maze BFS加最小生成树
Borg Maze 题意: 题目我一开始一直读不懂.有一个会分身的人,要在一个地图中踩到所有的A,这个人可以在出发地或者A点任意分身,问最少要走几步,这个人可以踩遍地图中所有的A点. 思路: 感觉就算 ...
- poj 3026 Borg Maze (bfs + 最小生成树)
链接:poj 3026 题意:y行x列的迷宫中,#代表阻隔墙(不可走).空格代表空位(可走).S代表搜索起点(可走),A代表目的地(可走),如今要从S出发,每次可上下左右移动一格到可走的地方.求到达全 ...
- POJ - 3026 Borg Maze bfs+最小生成树。
http://poj.org/problem?id=3026 题意:给你一个迷宫,里面有 ‘S’起点,‘A’标记,‘#’墙壁,‘ ’空地.求从S出发,经过所有A所需要的最短路.你有一个特殊能力,当走到 ...
- poj 3026 Borg Maze bfs建图+最小生成树
题目说从S开始,在S或者A的地方可以分裂前进. 想一想后发现就是求一颗最小生成树. 首先bfs预处理得到每两点之间的距离,我的程序用map做了一个映射,将每个点的坐标映射到1-n上,这样建图比较方便. ...
- POJ 3026 Borg Maze【BFS+最小生成树】
链接: http://poj.org/problem?id=3026 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...
- POJ 3026 Borg Maze(bfs+最小生成树)
Borg Maze Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6634 Accepted: 2240 Descrip ...
- 快速切题 poj 3026 Borg Maze 最小生成树+bfs prim算法 难度:0
Borg Maze Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8905 Accepted: 2969 Descrip ...
- POJ 3026 --Borg Maze(bfs,最小生成树,英语题意题,卡格式)
Borg Maze Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16625 Accepted: 5383 Descri ...
随机推荐
- [Javascript] Drawing Paths - Lines and Rectangles
<!DOCTYPE html> <html> <head> <meta name="description" content=" ...
- JSON返回的自定义
当返回json格式的数据时,不想自己组织结果集,可以利用类的call方法. json类: <?php class Json { private $_data; public function _ ...
- Hdu 2473(并查集删除操作) Junk-Mail Filter
有木有非常吊 加强 加强版 啊 ,看了都不敢做了 .后来先做了食物链这个我还是看过的.但还是A不掉,没明确神魔意思 .总而言之.大牛的博客是个好东西.我就那么看了一下,还是不懂怎莫办啊,哎, ...
- IC芯片
5.8寸显示屏/LB058WQ1(SD)01LG2 74HC04 0.3NXP10K 74HC138 0.37NXP20K 74HC245 0.52NXP30K 74HC595 明威 ...
- 释放Linux磁盘空间的一种方法
1.用df 检查发现/根目录可用空间为0 [root@/]#df -h 2.用du检查发现 各目录占用的空间都很少,有约3G的空间莫名其妙地丢了. [root@/]# du -m ...
- frameset和iframe--框架对象及元素标签对象
chrome不兼容:不支持跨frame的变量的获取 var oParent = parent.document.getElementById('contentFrm'); //frameset标签对象 ...
- (整理)FORM:Oracle EBS客制化Form的菜单栏用法说明
用户最多可以定义45个form-level的trigger,名称必须为SPECIALn, 其中SPECIAL1 to SPECIAL15属于Tools菜单项,放在“工具”主菜单下. SPECIAL16 ...
- javascript的一点误解
var a=[]; for(var i = 0; i < 10; i++) { a[i] = function() { return i; } } console.log(a[9]()); co ...
- 在网页中添加分享到微信、QQ、微博
参考地址:http://www.bshare.cn/help/installAction 在上面的地址中: 1.可选择分享到的位置,如QQ.微信.微博等 2.按钮的样式.悬浮或者以横幅的方式自己找位置 ...
- Java 内存分析图
client -------------------------- public class Client{ public static void main(String[] args){ Perso ...