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 ...
随机推荐
- 1 开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你。 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的原则已经被许多现有的JDBC应用程序编译运行并验证过。 这些指导原则包括: 正确的使用数据库MetaData方法 只获取需要的数据 选用最佳性能的功能 管理连
1 开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你. 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的 ...
- LibreOJ #119. 最短路 (堆优化dijkstra)
题目描述 给一个 n(1≤2500≤n) n(1 \leq 2500 \leq n)n(1≤2500≤n) 个点 m(1≤6200≤m) m(1 \leq 6200 \leq m)m(1≤6200≤m ...
- python爬虫---实现项目(一) Requests爬取HTML信息
上面的博客把基本的HTML解析库已经说完了,这次我们来给予几个实战的项目. 这次主要用Requests库+正则表达式来解析HTML. 项目一:爬取猫眼电影TOP100信息 代码地址:https://g ...
- [BZOJ3940]:[Usaco2015 Feb]Censoring(AC自动机)
题目传送门 题目描述: FJ把杂志上所有的文章摘抄了下来并把它变成了一个长度不超过105的字符串S.他有一个包含n个单词的列表,列表里的n个单词记为t1…tN.他希望从S中删除这些单词.FJ每次在S中 ...
- SQL的几种连接
1. 内连接 结果: 从左表中取出每一条记录,去右表中与所有的记录进行匹配: 匹配必须是某个条件是左表中与右表中相同,才会保留结果,否则不保留: 1.等值连接:在连接条件中使用等于号(=)运算符比较被 ...
- 客户端和服务器最多能发送和接收多少TCP连接数?
1. 对于服务器,每一个tcp连接都要占一个文件描述符,一旦这个文件描述符使用完了,就会返回错误. 我们知道操作系统上端口号1024以下是系统保留的,从1024-65535是用户使用的.由于每个TCP ...
- 常见的网络命令--ping.hostname
hostname命令 作用:显示以及设置主机名 一. 显示系统主机名 第一种方式:hostname 第二种方式:cat /etc/sysconfig/ntework 使用举例: 从上面可以看到我的系 ...
- python UDP-数据报协议
基于udp协议通信的套接字 服务端 from socket import * server = socket(AF_INET, SOCK_DGRAM) # SOCK_DGRAM=>数据报协议 s ...
- js事件 (包含call()方法使用特点)
1.焦点事件 获取焦点事件onfocus\失去焦点事件onblur 例: oText.onfocus=function(){} 焦点:使浏览器能够区分用户输入的对象,当一个元素有焦点的时候,那么它就可 ...
- Python面向对象之异常
异常的概念 程序在运行时,如果python解释器遇见一个错误,就会停止程序的运行,并且提示一些错误信息,这就是异常: 程序遇见错误停止执行并且提示错误信息,这个动作我们称之为抛出(raise)异常: ...