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 ...
随机推荐
- CentOS6.5下 yum安装LAMP
CentOS下yum安装LAMP 1. 用yum安装Apache,Mysql,PHP. 1.1安装Apache yum install httpd httpd-devel 安装完成后,用/etc/ ...
- 关于Shell中命令替换$(...)与后置引用`...`的不同
命令替换 在bash中,$( )与` `(反引号)都是用来作命令替换的.命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行. $( )与`` ...
- Oracle中的CR块详解
1.概述 Cr块consistent read块也就是用来维护oracle的读一致性的数据块.当查询某些数据的时候,发现数据块的版本比我们要查询的新,例如session1执行了dml操作并没有提交,s ...
- 【NHibernate】应用层面需要掌握的知识汇总
休息接待区 欢迎加入NHibernate中文社区!在讨论中寻找乐趣!在问题中寻找答案! 旅途站点路线 第一站:熟悉NHibernate NHibernate之旅(1):开篇有益 第二站:接触NHibe ...
- 【IOS】分享下近一年IOS开发的经验总结
从上个暑假末到现在,自己做IOS开发也快一年了.从一开始的什么都不知道,到现在大多事都能搭上一两手,期间经历了很多事情.下面来和大家分享一下心得和感触. 1.现在移动领域的知识更新的很快,无论是IOS ...
- python学习笔记26(python中__name__的使用)
在python中,每个py文件都是一个模块,也都是一个可执行文件,即包含main方法.因此,对每个py文件,可以单独运行,也可以import它给其他客户使用,这两种情况不一样. 1. 如果模块是被导入 ...
- CSS定义字体间距 字体行与行间距
CSS定义字体行间距 line-height:xxpx; CSS定义字体间距 下面我们讲述一下CSS的文本属性,还是先来看一下文本属性的详细列表: 属性 属性含义 属性值 Word-s ...
- hibernate中session
hibernate中的session是一级缓存,可以理解为进程级的缓存.在进程运行期间一直存在. session可以理解为一个可以操作数据库的对象 具体如何操作数据库? session中有方法, 如果 ...
- hibernate简介(Session,几种状态,方法······等)
1.Hibernate是什么? Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数 ...
- css3实现非矩形图片效果
经常在网站上看到有一些非矩形的图片展示.在以前可能我会毫不犹豫的直接放上张处理好的图片.但是这样的话确实有些不太友好.每每需要换图的时候,都要去开图像处理软件也是蛮拼的.自从有了css3的选装,妈妈就 ...