poj 3026 Borg Maze 最小生成树prim
来源:互联网 发布:王伟 知乎 编辑:程序博客网 时间:2024/05/03 07:55
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>#include<queue>using namespace std;const int inf=0x3f3f3f3f;const int N=4048;char mp[300][300];int ans,cnt,p[300][300],e[4048][4048],vis[300][300];int dx[]= {0,0,1,-1};int dy[]= {-1,1,0,0};int n,m;struct node{ int x,y,d;} tp,t;void bfs(int x,int y){ int i,j; t.x=x; t.y=y; t.d=0; memset(vis,0,sizeof(vis)); queue<node>q; q.push(t); vis[x][y]=1; while(!q.empty()) { t=q.front(); q.pop(); for(i=0; i<4; i++) { tp.x=t.x+dx[i]; tp.y=t.y+dy[i]; tp.d=t.d+1; if(tp.x<0||tp.x>=n||tp.y<0||tp.y>=m) continue; if(mp[tp.x][tp.y]=='#') continue; if(mp[tp.x][tp.y]=='A'||mp[tp.x][tp.y]=='S') { int u=p[x][y],v=p[tp.x][tp.y]; if(tp.d<e[u][v]) e[u][v]=e[v][u]=tp.d; } if(vis[tp.x][tp.y]==1) continue; vis[tp.x][tp.y]=1; q.push(tp); } }}int prim(int tol){ bool vis[N]; int dis[N]; int i,j,u,v,w,ans=0; for(i=0; i<=tol; i++) dis[i]=e[0][i]; memset(vis,0,sizeof(vis)); vis[0]=1; for(i=1; i<tol; i++) { w=inf; u=-1; for(j=1; j<tol; j++) if(!vis[j]&&w>dis[j]) w=dis[j],u=j; vis[u]=1; ans+=w; for(v=0; v<tol; v++) if(!vis[v]) if(dis[v]>e[u][v]) dis[v]=e[u][v]; } return ans;}int main(){ int _,i,j,st; char tmp[1024]; scanf("%d",&_); while(_--) { scanf("%d%d",&m,&n); gets(tmp); cnt=1; for(i=0; i<n; i++) { gets(mp[i]); for(j=0; j<m; j++) { if(mp[i][j]=='S') p[i][j]=0; else if(mp[i][j]=='A') p[i][j]=cnt++; } } ans=0; for(i=0; i<cnt; i++) for(j=0; j<cnt; j++) e[i][j]=inf; for(i=0; i<n; i++) for(j=0; j<m; j++) if(mp[i][j]=='S'||mp[i][j]=='A') bfs(i,j); //cout<<cnt<<endl; printf("%d\n",prim(cnt)); } return 0;}
0 0
- POJ 3026 Borg Maze(bfs+最小生成树-Prim)
- poj 3026 Borg Maze 最小生成树prim
- POJ 3026 Borg Maze 最小生成树Prim+BFS
- POJ 3026-Borg Maze(BFS+prim最小生成树)
- poj 3026 Borg Maze 最小生成树
- poj-3026-Borg Maze-最小生成树
- POJ 3026 Borg Maze 最小生成树
- poj 3026 Borg Maze(最小生成树)
- POJ 3026 Borg Maze & UVA 10307 Killing Aliens in Borg Maze(BFS,最小生成树)
- poj 3026 Borg Maze 最小生成树+bfs
- POJ 3026 Borg Maze bfs + 最小生成树
- 初级->图算法->最小生成树 poj 3026 Borg Maze
- poj 3026 Borg Maze bfs建图+最小生成树
- poj 3026 Borg Maze (bfs+最小生成树)
- poj 3026 Borg Maze(搜索+最小生成树)
- POJ 3026 Borg Maze【BFS+最小生成树】
- poj 3026 Borg Maze 最小生成树 + 广搜
- POJ 3026 Borg Maze (最小生成树 + BFS)
- 《第一行代码——Android》之项目的目录结构
- iOS 微信登录,分享等不执行代理方法 - 遇到的坑
- Java注解(Annotation)详解(三)——解析注解
- Java 解決BufferedReader读取UTF-8文件中文乱码
- js封装map
- poj 3026 Borg Maze 最小生成树prim
- Fail to connect to camera service的几种原因和解决方法
- Linux下安装mysql
- HDU 2594 Simpsons’ Hidden Talents (kmp)
- LeetCode 169: Majority Element
- SimilarityUtil相似度匹配
- OpenGL库深度剖析 & gl,glu,glut的区别
- Linux下各路径的作用
- Effective C++笔记(三)