博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3026 Borg Maze(Prim+BFS建邻接矩阵)
阅读量:4975 次
发布时间:2019-06-12

本文共 1809 字,大约阅读时间需要 6 分钟。

#include
#include
#include
#include
#include
#include
using namespace std;const int INF=10e8;const int MAXN=55;int col,row,k,minn;char str[MAXN][MAXN];int maze[MAXN][MAXN],dist[MAXN*2][MAXN*2],lowdis[MAXN*2];int dx[]={-1,0,0,1};int dy[]={ 0,-1,1,0};bool vist[MAXN][MAXN]; //BFS时记录是否走过bool vis[MAXN*2];struct Node{ int x,y; int dis;}node[MAXN*2];bool judge(int x,int y){ //判断是否过界,或者是否能继续查下去 if(x<0||x>=row||y<0||y>=col||maze[x][y]==-1||vist[x][y]==1) return false; return true;}void BFS(int n)//用bfs建立邻接矩阵{ queue
que; //que为Node型的队列变量 memset(dist,0,sizeof(dist)); Node u,next; //u用来保存当前的队列元素,next保存下一个队列元素 for(int i=1;i<=n;i++) { while(!que.empty()) que.pop(); //清空队列元素 memset(vist,0,sizeof(vist)); int tot=0; node[i].dis=0; vist[node[i].x][node[i].y]=1; que.push(node[i]); while(!que.empty()) { u=que.front();que.pop(); int x=u.x,y=u.y; if(maze[x][y]!=0&&maze[x][y]!=-1) { tot++; dist[i][maze[x][y]]=dist[maze[x][y]][i]=u.dis; if(tot==n) break; } for(int j=0;j<4;j++) //从u点的四个方向上查找 { int xx=u.x+dx[j],yy=u.y+dy[j]; if(judge(xx,yy)) { next.x=xx;next.y=yy; next.dis=u.dis+1; vist[xx][yy]=1; que.push(next); } } } }}int Prim(int n){ int ans=0; memset(vis,0,sizeof(vis)); vis[1]=1; for(int i=1;i<=n;i++) lowdis[i]=dist[1][i]; for(int i=1;i<=n-1;i++) { minn=INF;k=-1; for(int j=1;j<=n;j++) { if(!vis[j]&&minn>lowdis[j]) { minn=lowdis[j]; k=j; } } if(k==-1) break; ans+=minn;vis[k]=1; for(int j=1;j<=n;j++) if(!vis[j]&&lowdis[j]>dist[k][j]) lowdis[j]=dist[k][j]; } return ans;}int main(){ int n; scanf("%d",&n); while(n--) { int cnt=0; memset(node,0,sizeof(node)); scanf("%d%d",&col,&row); char ch[MAXN]; gets(ch);//重点!处理输入时多余的空格 for(int i=0;i

转载于:https://www.cnblogs.com/atmacmer/p/5199572.html

你可能感兴趣的文章
input放在a标签里面不能选择input里面的文本,IE9点击失效
查看>>
css中height 100vh的应用场景,动态高度百分比布局,浏览器视区大小单位
查看>>
eclipse关键字自动不全的设置方法[转载]
查看>>
四则运算03
查看>>
GOF设计模式——Iterator模式
查看>>
程序员常去的6个头条分享站点
查看>>
作业三3
查看>>
SQL语句优化技术分析
查看>>
开通博客
查看>>
github 快速部署
查看>>
Python内置函数
查看>>
------ 比较二位数组大小-----
查看>>
canvas绘制经典折线图(一)
查看>>
项目职责
查看>>
对空间时钟的调查报告
查看>>
初步体验javascript try catch机制
查看>>
javaweb学习——session和Cookie实现购物车功能
查看>>
Android系统是目前最为流行的手机系统之一
查看>>
洛谷 2615 神奇的幻方——模拟
查看>>
【bzoj1085】【 [SCOI2005]骑士精神】启发式剪枝+迭代加深搜索
查看>>