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 ...
随机推荐
- java中异常处理finally和return语句的执行顺序
finally代码块的语句在return之前一定会得到执行 如果try块中有return语句,finally代码块没有return语句,那么try块中的return语句在返回之前会先将要返回的值保存, ...
- 8.3.3 快速系统调用 —— XP SP3上SystemCallStub的奇怪问题
依书上的例子,ReadFile()函数会调用ntdll!NtReadFile(),后者将服务号放到eax之中,然后调用SharedUserData!SystemCallStub(),由此函数执行sys ...
- Idea maven项目不能新建package和class的解决方法
如下图,用IDEA新建的maven项目不能新建package,class等 原因是:这里的java文件夹是普通文件夹,要设置为Sources Root.(如下图) 就可以了(见下图)
- c语言 预处理的使用 宏展开下的#,##
1. #include 包含头文件 2.define 宏定义(可以理解为替换,不进行语法检查) 写法 #define 宏名 宏体 加括号 #define ABC (5+3) #define AB ...
- CPP-基础:关于私有成员的访问
a.C++的类的成员函数中,允许直接访问该类的对象的私有成员变量. b.在类的成员函数中可以访问同类型实例的私有变量. c.拷贝构造函数里,可以直接访问另外一个同类对象(引用)的私有成员. d.类的成 ...
- CF633H Fibonacci-ish II
题目描述 题解: 坑题搞了三天. 莫队+线段树. 还有一些和斐波那契数列有关的性质. 首先答案是$a_1f_1+a_2f_2+…+a_nf_n$, 考虑插进去一个元素对答案产生的影响. 比如插进去一个 ...
- SCOI2013 数数
题目描述 题解: 很玄学的一道数位$dp$,看了很多篇题解才懂. 直接挂$l$的题解. 代码: #include<cstdio> #include<cstring> #incl ...
- TP框架中同时使用“or”和“and”
今天在tp中遇到一个问题,可能这并不算难的问题,但是我还是分享一下 以下是tp手册里面查询or的方式 $User = M("User"); // 实例化User对象 $where[ ...
- Linux 命令学习(1): head和tail
版权声明:本文为博主原创文章,未经允许,不得转载. head head 命令可以将一段文本的开头一部分输出到标准输出. head命令既可以处理文本文件也可以处理标准输入. 基本应用 处理文本文件: h ...
- 条款17:以独立语句将newed对象置入智能指针(Store newed objects in smart pointers in standalone statements)
NOTE: 1.以独立语句将newed对象存储于智能指针内.如果不这样做,一旦异常被抛出,有可能导致难以察觉的资源泄漏.