poj 3026 Borg Maze (最小生成树+bfs)
有几个错误,调试了几个小时,样例过后 1Y.
题目:http://poj.org/problem?id=3026
题意:就是让求A们和S的最小生成树
先用bfs找每两点的距离,再建树。没剪枝 63MS。
#include <iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<stack>
#include<queue>
#include<cmath>
#include<algorithm>
using namespace std; char G[][];
int dx[]={,,,-};
int dy[]={,-,,};
int r,c,bin[],an,ff[][]; //an表示边数
struct node
{
int x,y;
}e[]; //表示点 struct tree
{
int u,v,w;
}q[];//边及权值 struct point
{
int x,y,step;
}next,pos;//bfs 里的队列 void add(int u,int v,int w)//加边
{
q[an].u=u; q[an].v=v; q[an++].w=w;
} void bfs(int f,int x,int y)
{
int vis[][],i;
queue<point>qu;
memset(vis,,sizeof(vis));
next.x=x; next.y=y; next.step=;
qu.push(next);
vis[x][y]=;
while(!qu.empty())
{
pos=qu.front();
qu.pop();
for(i=; i<; i++)
{
next.x=pos.x+dx[i]; next.y=pos.y+dy[i]; next.step=pos.step+;
if(next.x>= && next.x<r && next.y>= && next.y<c && vis[next.x][next.y]== && G[next.x][next.y]!='#')
{
vis[next.x][next.y]=;
qu.push(next);
if(G[next.x][next.y]=='A'||G[next.x][next.y]=='S')
add(f,ff[next.x][next.y],next.step);
}
}
}
}
int cmp(const void *a,const void *b)
{
return (*(tree *)a).w-(*(tree *)b).w;
}
int find(int a)
{
if(a==bin[a])
return a;
else
bin[a]=find(bin[a]);
};
int main()
{
int t,cnt,i,j,x,y,num,sum;//cnt表示点的个数
char str[];
cin>>t;
while(t--)
{
sum=; num=; an=;
cin>>c>>r;
gets(str);
for(i=; i<r; i++)
gets(G[i]); cnt=;
for(i=; i<r; i++)
for(j=; j<c; j++)
if(G[i][j]=='S'||G[i][j]=='A')
{
ff[i][j]=cnt;
e[cnt].x=i; e[cnt++].y=j;
} for(i=; i<cnt; i++)
{
bfs(i,e[i].x,e[i].y);
} for(i=; i<cnt; i++)
bin[i]=i;
qsort(q,an,sizeof(q[]),cmp);
for(i=; i<=an-; i++)
{
x=find(q[i].u); y=find(q[i].v);
if(x!=y)
{
sum+=q[i].w;
num++;
bin[x]=y;
}
if(num==cnt-)
break;
}
printf("%d\n",sum);
}
}
poj 3026 Borg Maze (最小生成树+bfs)的更多相关文章
- 快速切题 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+最小生成树】
链接: 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,最小生成树,英语题意题,卡格式)
Borg Maze Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16625 Accepted: 5383 Descri ...
- poj 3026 Borg Maze 最小生成树 + 广搜
点击打开链接 Borg Maze Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7097 Accepted: 2389 ...
- 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 (最小生成树)
Borg Maze 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/I Description The Borg is an im ...
随机推荐
- input onfocus onblur
<input type="text" style="color:#999" value="账户" onfocus='if(this.v ...
- JavaScript 高级程序设计 01-基本概念
一.JavaScript组成 1.一个完成JavaScript是由ECMAScript.DOM.BOM三部分组成的. ECMAScript:提供核心语言功能--语法.类型.语句.关键字.保留字.操作符 ...
- 6个好用的Web开发工具
在过去的几年间,涌现出了很多Web开发工具,它们大多还是比较吸引人的,方便了我们的工作.我们可以学习一下这些新东西,短时间就可以拓宽思路(PHP100推荐:学习10分钟,改变你的程序员生涯).这些应用 ...
- Opencv 的数据结构
opencv的基本数据结构 结构 成员 意义 CvPoint int x,y 图像中的点 CvPoint2D32f float x,y 二维空间中的点 CvPoint3D32f float x,y,z ...
- 【转】perl中尖括号运算符(<>)使用说明
perl中尖括号运算符的用途分享,这里简单介绍下,方便需要的朋友 perl中<>运算符可以有如下的用途: 1)如果尖括号中间是文件句柄,尖括号运算符允许你读取文件句柄,比如<STDI ...
- Determining IP information for eth0… failed; no link present. Check cable
[root@hexuweb101 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0添加下面代码: check_link_down () { return ...
- git操作技巧(转载)
转载自:https://segmentfault.com/q/1010000000181403 git支持很多种工作流程,我们采用的一般是这样,远程创建一个主分支,本地每人创建功能分支,日常工作流程如 ...
- Android水平(横向)翻页列表,类似水平GridVIew
Android水平(横向)翻页列表,类似于水平方向的GridView,行列自定义,但要翻页切换,考虑加载性能,当Item数据很多时加载和翻页要流畅,翻页时要有动画效果,效果图如下: 实现方式: 1:翻 ...
- GIS的数学基础
在这里需要说明一点,任何领域的概念.技术都有其特定的适用范围,有其解决的问题,有其发展的历史,所以,抛开应用环境.范围来谈技术就像是没有根系的枝丫,枝丫再粗壮也只是一根木头而已. 那接下来我们来聊聊什 ...
- Delphi XE5 android 捕获几个事件
以下代码能监控到以下几个事件: FinishedLaunching BecameActive WillBecomeInactive EnteredBackground Wi ...