Borg Maze-POJ3026(bfs+最小生成树)
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+最小生成树)的更多相关文章
- POJ 3026 Borg Maze(bfs+最小生成树)
Borg Maze Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6634 Accepted: 2240 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: 16625 Accepted: 5383 Descri ...
- POJ3026 Borg Maze(Prim)(BFS)
Borg Maze Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12729 Accepted: 4153 Descri ...
- Borg Maze(MST & bfs)
Borg Maze Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9220 Accepted: 3087 Descrip ...
- POJ 3026 : Borg Maze(BFS + Prim)
http://poj.org/problem?id=3026 Borg Maze Time Limit: 1000MS Memory Limit: 65536K Total Submissions ...
- Borg Maze(BFS+MST)
Borg Maze http://poj.org/problem?id=3026 Time Limit: 1000MS Memory Limit: 65536K Total Submissions ...
- POJ3026——Borg Maze(BFS+最小生成树)
Borg Maze DescriptionThe Borg is an immensely powerful race of enhanced humanoids from the delta qua ...
- 快速切题 poj 3026 Borg Maze 最小生成树+bfs prim算法 难度:0
Borg Maze Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8905 Accepted: 2969 Descrip ...
- POJ3026:Borg Maze (最小生成树)
Borg Maze Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18644 Accepted: 5990 题目链接:h ...
随机推荐
- autoHeight.vue 高度自适应
autoHeight.vue 高度自适应 <!-- * @description 自适应高度 * @fileName autoHeight.vue * @author 彭成刚 * @date 2 ...
- github 新建一个仓库后
每次都记不住命令,记一下,防止找不到 echo "# learn18" >> README.md git init git add README.md git comm ...
- jQuery判断一个元素是否为另一个元素的子元素(或者其本身)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head& ...
- Redis那些事(一) — Redis简介
本人最近在学习Redis的使用和底层原理,有一些收获,所以希望通过写博客的形式来记录自己的学习过程,加深自己的理解,同时也方便以后查阅复习.目前打算先记录一些基本的使用方法和部分底层实现,其他的如果有 ...
- C语言程序返回值为int的时候,不同值代表不同的意义
这个是我自己给自己的代码定的标准,方便自己阅读与编码.他人代码情况不可套用 1 执行成功 0 出现错误,不影响程序执行 -1 执行失败 -2 程序内部致命错误,退出程序
- Ubuntu、CentOS 解决docker命令权限问题(sudo)
#创建docker组 weiyj@ubuntu18:~$ sudo groupadd docker groupadd: group 'docker' already exists #将当前用户加入do ...
- 条款34:区分接口继承和实现继承(Different between inheritance of interface and inheritance of implemenation)
NOTE: 1.接口继承和实现继承不同.在public继承之下,derived classes总是继承base class的接口. 2.pure virtual 函数只具体指定接口继承及缺省实现继承. ...
- POJ 1201 Intervals(差分约束 区间约束模版)
关于差分约束详情可阅读:http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html 题意: 给定n个区间[L,R], 每个区间至 ...
- CTSC1998 选课(背包类树形Dp)
题意: 给出 n 节课的先修课号以及学分(先修课号指的是在学习某节课时先需要学习的课程),求学 m 节课的最大学分. 细节: 1.对于课程 a 其先修课号为 b ,对于课程 b 其先修课号为 c ,则 ...
- tiles框架的definition讲解
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE tiles-definitions PUBL ...