Prim模板
来源:互联网 发布:按键精灵可以编vb 编辑:程序博客网 时间:2024/06/04 19:44
/*Primq求MST耗费矩阵cost[][],标号从1开始,1~n返回最小生成树的权值,返回-1表示原图不连通*/#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int INF=0x3f3f3f3f;const int MAXN=505;int cost[MAXN][MAXN];bool vis[MAXN];int lowc[MAXN];int Prim(int n){ int ans=0; memset(vis,false,sizeof(vis)); vis[1]=true; for(int i=2;i<=n;i++) lowc[i]=cost[1][i]; for(int i=2;i<=n;i++) { int minc=INF,p=-1; for(int j=1;j<=n;j++) { if(!vis[j]&&minc>lowc[j]) { minc=lowc[j]; p=j; } } if(minc==INF) return -1;//原图不连通 ans+=minc; vis[p]=true; for(int j=1;j<=n;j++) { if(!vis[j]&&lowc[j]>cost[p][j]) lowc[j]=cost[p][j]; } } return ans;}int main(){ int n,m; while(scanf("%d%d",&m,&n)!=EOF) { if(m==0) break; memset(cost,INF,sizeof(cost)); int u,v,w; for(int i=1;i<=m;i++) { scanf("%d%d%d",&u,&v,&w); cost[u][v]=min(cost[u][v],w); cost[v][u]=min(cost[v][u],w); } int res=Prim(n); if(res==-1) printf("?\n"); else printf("%d\n",res); } return 0;}
阅读全文
0 0
- prim模板
- Prim 模板
- 模板-prim
- prim模板
- Prim模板
- Prim 模板
- Prim模板
- 模板:Prim
- Prim 模板 hdu 1879
- Kru&&Prim模板
- kruscal 和 prim模板
- Prim算法模板
- prim算法模板
- hdu 1162 prim模板
- (MST-Prim算法模板)
- Prim 模板 POJ 3625
- prim+heap模板
- prim队列优化模板
- 记录:我理解的B/S与C/S
- Leetcode-Intersection of Two Arrays-Python
- 全国职称计算机考试经验总结
- redis前端启动与后端启动
- 嵌入式linux 系统支持usb wifi BL-R8723BT1
- Prim模板
- .Net MVC&&datatables.js&&bootstrap做一个界面的CRUD有多简单
- web的基本攻击
- Hello World程序背后的故事解密(RtlUserThreadStart)
- neo4j使用教程(1) 从搭建neo4j网络服务开始
- 冒泡算法原理与代码实现
- fragment viewpager 懒加载
- Minimum Inversion Number 树状数组
- 网站开发流程