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 ...
随机推荐
- ETH Dapp 体验报告
Dapp 体验报告 Dapp是分散式的应用程序.DApp运行在去中心化的网络上,也就是区块链网络中.网络中不存在中心化的节点可以完整的控制DApp. 必须依赖合约部署,没有一个中心化的服务器托管. 对 ...
- 事件绑定、取消的二种形式 & call
<script> //call 函数下的一个方法,call方法第一个参数可以改变函数执行过程中的内部this的指向,call方法第二个参数开始就是原来函数的参数列表. function f ...
- css 两列 左侧列固定 width: 100px; float: left; 右侧列自适应 margin-left:100px; 注意要用在div上的style
css 两列 左侧列固定 width: 100px; float: left; 右侧列自适应 margin-left:100px; 注意要用在div上的style .con1{ width: 100p ...
- Ubuntu的防火墙配置-ufw-iptables
自打2.4版本以后的Linux内核中, 提供了一个非常优秀的防火墙工具.这个工具可以对出入服务的网络数据进行分割.过滤.转发等等细微的控制,进而实现诸如防火墙.NAT等功能.一般来说, 我们会使用名气 ...
- ubuntu install zabbix
ubuntu install zabbix reference1 reference2 some ERRORS raise during install process, may it help. z ...
- Java Thread.join()详解
一.使用方式. 二.为什么要用join()方法 三.join方法的作用 join 四.用实例来理解 打印结果: 打印结果: 五.从源码看join()方法 一.使用方式. join是Thread类的 ...
- C++ new delete(一)
在C#.Java這種managed語言,因為有garbage collection,所以完全不用考慮free()或delete,但在C/C++,有時候要delete的,有時又不用,到底哪些改delet ...
- [POJ] 3539 Elevator
http://poj.org/problem?id=3539 给定一个电梯,可以上升a,b,c层和回到1层,给定楼高h,求可达层数 lyd讲的同余类BFS,方法是先把三个量压成两个,即把h%a,因为对 ...
- Jenkins出现 {"changed": false, "msg": "mkdir: cannot create directory ‘/root/.ansible/tmp/ansible-tmp-1552390265.8-253945919613076’: No space left on device\n", "unreachable": true}
之前部署Jenkins没有遇到过这个问题,百度也找不到相关内容,无奈用过google翻译了一下,显示内存不足,上到服务器查询df -h 发现use% 100% 由于日志等文件导致服务器磁盘空间满了,引 ...
- python中的参数、全局变量及局部变量
1.位置参数.关键字参数.默认参数的使用 位置参数.关键字参数 def test(x,y,z): print(x) print(y) print(z) test(1,2,3) #位置参数,必须一一对应 ...