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. 1   开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你。   本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的原则已经被许多现有的JDBC应用程序编译运行并验证过。 这些指导原则包括:    正确的使用数据库MetaData方法    只获取需要的数据    选用最佳性能的功能    管理连

    1 开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你. 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的 ...

  2. 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 ...

  3. python爬虫---实现项目(一) Requests爬取HTML信息

    上面的博客把基本的HTML解析库已经说完了,这次我们来给予几个实战的项目. 这次主要用Requests库+正则表达式来解析HTML. 项目一:爬取猫眼电影TOP100信息 代码地址:https://g ...

  4. [BZOJ3940]:[Usaco2015 Feb]Censoring(AC自动机)

    题目传送门 题目描述: FJ把杂志上所有的文章摘抄了下来并把它变成了一个长度不超过105的字符串S.他有一个包含n个单词的列表,列表里的n个单词记为t1…tN.他希望从S中删除这些单词.FJ每次在S中 ...

  5. SQL的几种连接

    1. 内连接 结果: 从左表中取出每一条记录,去右表中与所有的记录进行匹配: 匹配必须是某个条件是左表中与右表中相同,才会保留结果,否则不保留: 1.等值连接:在连接条件中使用等于号(=)运算符比较被 ...

  6. 客户端和服务器最多能发送和接收多少TCP连接数?

    1. 对于服务器,每一个tcp连接都要占一个文件描述符,一旦这个文件描述符使用完了,就会返回错误. 我们知道操作系统上端口号1024以下是系统保留的,从1024-65535是用户使用的.由于每个TCP ...

  7. 常见的网络命令--ping.hostname

    hostname命令 作用:显示以及设置主机名 一.  显示系统主机名 第一种方式:hostname 第二种方式:cat /etc/sysconfig/ntework 使用举例: 从上面可以看到我的系 ...

  8. python UDP-数据报协议

    基于udp协议通信的套接字 服务端 from socket import * server = socket(AF_INET, SOCK_DGRAM) # SOCK_DGRAM=>数据报协议 s ...

  9. js事件 (包含call()方法使用特点)

    1.焦点事件 获取焦点事件onfocus\失去焦点事件onblur 例: oText.onfocus=function(){} 焦点:使浏览器能够区分用户输入的对象,当一个元素有焦点的时候,那么它就可 ...

  10. Python面向对象之异常

    异常的概念 程序在运行时,如果python解释器遇见一个错误,就会停止程序的运行,并且提示一些错误信息,这就是异常: 程序遇见错误停止执行并且提示错误信息,这个动作我们称之为抛出(raise)异常: ...