POJ3026Borg Maze(BFS+prim最小生成树)
来源:互联网 发布:戈博贝尔求生刀淘宝 编辑:程序博客网 时间:2024/05/18 10:15
原题地址:点击打开链接
#include<stdio.h>#include<queue>#include<string.h>#define MAX 1<<31-1using namespace std;struct Point{int x;int y;};int d[110][110];char map[55][55];int numOfMap[55][55];int vis[55][55];int time[55][55];int x[4]={-1,0,1,0},y[4]={0,1,0,-1};int dist[110];int used[110];int num;int m,n;void bfs(Point p){int i,a,b;memset(vis,0,sizeof(vis));memset(time,0,sizeof(time));queue<Point>que;que.push(p);vis[p.x][p.y]=1;while(!que.empty()){Point p1=que.front();que.pop();for(i=0;i<4;i++){a=p1.x+x[i];b=p1.y+y[i];if(a>=0&&a<=m&&b>=0&&b<=n&&vis[a][b]!=1&&map[a][b]!='#'){time[a][b]=time[p1.x][p1.y]+1;vis[a][b]=1;que.push((Point){a,b});if(numOfMap[a][b]>0){d[numOfMap[p.x][p.y]][numOfMap[a][b]]=time[a][b];}}}}}int prim(){int i,j,min,u,res=0;memset(used,0,sizeof(used));for(i=1;i<=num;i++)dist[i]=MAX;dist[1]=0;for(i=1;i<=num;i++){min=MAX;for(j=1;j<=num;j++){if(!used[j]&&min>dist[j]){min=dist[j];u=j;}}used[u]=1;for(j=1;j<=num;j++){if(used[j]!=1&&dist[j]>d[u][j])dist[j]=d[u][j];}}for(i=1;i<=num;i++)res+=dist[i];return res;}int main(){int i,j,t;char str[110];scanf("%d",&t);while(t--){num=0;memset(numOfMap,0,sizeof(numOfMap));memset(d,0,sizeof(d));scanf("%d%d",&n,&m);gets(str);for(i=0;i<m;i++)gets(map[i]);for(i=0;i<m;i++)for(j=0;j<n;j++){if(map[i][j]=='A'||map[i][j]=='S'){numOfMap[i][j]=++num;}}for(i=1;i<=num;i++)for(j=1;j<=num;j++)d[i][j]=MAX;for(i=0;i<m;i++)for(j=0;j<n;j++){if(numOfMap[i][j]>0){bfs((Point){i,j});}}int res=prim();printf("%d\n",res);}return 0;} /*36 5##### #A#A### # A##S ####### 7 7##### #AAA#### A## S #### ##AAA######## 7 7##### #AA#A### A## S #### ##AAA######## */
1 0
- POJ3026Borg Maze(BFS+prim最小生成树)
- poj3026Borg Maze(bfs预处理+最小生成树)
- POJ 3026 Borg Maze(bfs+最小生成树-Prim)
- POJ 3026 Borg Maze 最小生成树Prim+BFS
- POJ 3026-Borg Maze(BFS+prim最小生成树)
- poj3026 Borg Maze bfs+最小生成树 prim
- poj3026Borg Maze_最小生成树(广搜+prim算法)
- poj3026Borg Maze(bfs+最短路)
- POJ_3026_Borg Maze(BFS+最小生成树)
- POJ_3026_Borg Maze(BFS+最小生成树)
- Borg Maze (bfs+最小生成树)
- POJ 3026 Borg Maze 图论 prim算法(最小生成树)+BFS算法(广度优先搜索)
- PKU3026最小生成树+BFS+prim
- Borg Maze(最小生成树_bfs+prim)
- poj 3026 Borg Maze 最小生成树prim
- poj3026Borg Maze
- poj 3026 Borg Maze 最小生成树+bfs
- POJ 3026 Borg Maze bfs + 最小生成树
- 三种算法求一个数字序列的最长递增子序列
- 集训-变形合唱队形(DP)
- 《拳皇咆哮》Cocos2dx 横版动作手游全套源码 + 资源 + 数据库
- tableWidget用法
- 用户界面设计
- POJ3026Borg Maze(BFS+prim最小生成树)
- Linux安装Nodejs的三大方法
- 判断栈操作序列是否合法
- ionic 自定义指令无法获取绑定值,ngModelController.$viewValue无法使用
- 理解Semaphore及其用法详解
- mybatis常用jdbcType数据类型 对应java类型
- 免费分享到处在卖的最新微商管家4.0
- studio 或Android 一些搞笑的bug
- js实验2.(1)幻灯片切换实现