http://poj.org/problem?id=3026

如果一个一个普通搜处理不好的话会超时  可以连到一块搜

我觉得这个方法特别好

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<iostream>
#include<queue>
#include<algorithm>
#define N 105
#define INF 0x3f3f3f3f
using namespace std;
int dis[][]={{,},{-,},{,},{,-}};
int G[N][N],d[N],vis[N][N],m,n,v[N],b[N][N];
char F[N][N];
struct node
{
int x,y,temp;
}a; void Inn()
{
int i,j;
for(i=;i<=N;i++)
{
d[i]=INF;
for(j=;j<=N;j++)
G[i][j]=INF;
}
memset(b,,sizeof(b));
memset(F,,sizeof(F));
} void bfs(int s,int x,int y)
{
int i;
memset(vis,,sizeof(vis));
queue<node>Q;
a.x=x;
a.y=y;
a.temp=;
Q.push(a);
vis[a.x][a.y]=;
while(Q.size())
{
node q,p;
q=Q.front();
Q.pop();
if(F[q.x][q.y]=='A' || F[q.x][q.y]=='S')
G[s][b[q.x][q.y]]=q.temp;
for(i=;i<;i++)
{
p.x=q.x+dis[i][];
p.y=q.y+dis[i][]; if(F[p.x][p.y]!='#' && p.x<m&&p.y<n&&p.x>=&&p.y>=&&!vis[p.x][p.y])
{
p.temp=q.temp+;
Q.push(p);
vis[p.x][p.y]=;
}
}
}
} int prim(int k)
{
memset(v,,sizeof(v));
int i,j,ans=;
for(i=;i<=k;i++)
{
d[i]=G[][i];
}
v[]=;
for(i=;i<k;i++)
{
int Min=INF;
int dist;
for(j=;j<=k;j++)
{
if(!v[j] && d[j]<Min)
{
Min=d[j];
dist=j;
}
}
v[dist]=;
ans+=Min;
for(j=;j<=k;j++)
{
if(!v[j] && d[j]>G[dist][j])
d[j]=G[dist][j];
}
}
return ans;
} int main()
{
int T,i,j;
scanf("%d",&T);
while(T--)
{
scanf("%d %d ",&n,&m);
Inn();
int k=;
for(i=;i<m;i++)
{
for(j=;j<n;j++)
{
scanf("%c",&F[i][j]);
if(F[i][j]=='A' || F[i][j]=='S')
{
b[i][j]=k;
k++;
}
}
getchar();
}
for(i=;i<m;i++)
{
for(j=;j<n;j++)
{
if(F[i][j]=='A' || F[i][j]=='S')
bfs(b[i][j],i,j);
}
}
printf("%d\n",prim(k-));
}
return ;
}

Borg Maze-POJ3026(bfs+最小生成树)的更多相关文章

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

    Borg Maze Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6634   Accepted: 2240 Descrip ...

  2. POJ 3026 Borg Maze【BFS+最小生成树】

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

  3. POJ 3026 --Borg Maze(bfs,最小生成树,英语题意题,卡格式)

    Borg Maze Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16625   Accepted: 5383 Descri ...

  4. POJ3026 Borg Maze(Prim)(BFS)

    Borg Maze Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12729   Accepted: 4153 Descri ...

  5. Borg Maze(MST & bfs)

    Borg Maze Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9220   Accepted: 3087 Descrip ...

  6. POJ 3026 : Borg Maze(BFS + Prim)

    http://poj.org/problem?id=3026 Borg Maze Time Limit: 1000MS   Memory Limit: 65536K Total Submissions ...

  7. Borg Maze(BFS+MST)

    Borg Maze http://poj.org/problem?id=3026 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions ...

  8. POJ3026——Borg Maze(BFS+最小生成树)

    Borg Maze DescriptionThe Borg is an immensely powerful race of enhanced humanoids from the delta qua ...

  9. 快速切题 poj 3026 Borg Maze 最小生成树+bfs prim算法 难度:0

    Borg Maze Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8905   Accepted: 2969 Descrip ...

  10. POJ3026:Borg Maze (最小生成树)

    Borg Maze Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 18644   Accepted: 5990 题目链接:h ...

随机推荐

  1. Python3简明简称(八)—— 函数

    我们经常需要在同一个程序里多次复用代码.函数可以很好的帮助我们完成这一点.我们在函数里写我们要重复做的事,然后我们在任何需要的时候调用它.我们已经看到一些内建的函数,比如 len(),divmod() ...

  2. billu_b0x靶场刷题

    https://www.vulnhub.com/ 里面有很多安全环境,只要下载相关镜像,在虚拟机上面搭建运行就可以练习对应靶场了. 第一步.信息收集 nmap扫描内网开放80端口的存活主机  nmap ...

  3. project .mpp 查看当天工作任务 1.选择自己 2.选择起始和终止时间 就显示当天的任务了

    project .mpp 查看当天工作任务 1.选择自己 2.选择起始和终止时间 就显示当天的任务了

  4. 基础数据类型(set集合)

    认识集合 由一个或多个确定的元素所构成的整体叫做集合. 集合中的元素有三个特征: 1.确定性(集合中的元素必须是确定的) 2.互异性(集合中的元素互不相同.例如:集合A={1,a},则a不能等于1) ...

  5. HTML5新特性之History

    几年前,Ajax的兴起给互联网带来了新的生机,同时也使用户体验有了质的飞跃,用户无需刷新页面即可获取新的数据,而页面也以一种更具有交互性的形式为用户展现视图,可以说这种变化对互联网发展的贡献是史无前例 ...

  6. MFC隐藏在黑暗之中的大坑

    大坑一:CDC会随着窗口状态的改变而改变 void K5::OnPaint() { CDC *pDC=this->GetDC(); //CDC最好设为局部变量 ... this->Rele ...

  7. 第1节 flume:10、flume的更多组件介绍

    作业:flume如何实现收集mysql的数据,没隔几秒钟,查看mysql中的数据是否有变化,一旦有变化,把数据拿过来,存到hdfs上. 需要使用custom source.可网上搜索,github上.

  8. Spring框架 aop操作的注解方法 基于aspectj的自动注解aop方法 抽取相同的value="execution(public void cn.itcast.f_aspect.CRUD.*())"

    首先是在xml配置文件中配置好对象,然后开启aop的注解方法——即<aop:aspectj-autoproxy></aop:aspectj-autoproxy> xml代码如下 ...

  9. 在已有的mysql表中添加自增字段

    现有数据表xiami,建表的时候忘记添加自增字段,现需要添加自增字段 第一步:添加字段 alter table xiami add id int; 第二步:修改字段 alter tabel xiami ...

  10. Go:单元测试

    测试用的文件名必须以 _test.go 结尾: 测试用的函数名必须以 Test 开头,一般来说:Test+被测试的函数名(第一个字母必须大写): func TestXx(t *testing.T) { ...