Sicily1083(最小生成树)
来源:互联网 发布:淘宝管控记录可归零吗 编辑:程序博客网 时间:2024/06/06 17:26
#include <iostream>#include <cstdio>#include <cstdlib>#include <list>#include <stack>#include <algorithm>using namespace std;int main(){ const int max=100000000; int T; while (1) { int n,m; scanf("%d",&n); if (!n) break; scanf("%d",&m); int i,j,A[100][100]; int d[100]; bool record[100]={false}; int a,b,dis; for (i=0;i<=n-1;i++) for (j=0;j<=n-1;j++) A[i][j]=max; for (i=0;i<=m-1;i++) { scanf("%d%d",&a,&b); scanf("%d",&dis); if (dis<A[a-1][b-1]) A[a-1][b-1]=A[b-1][a-1]=dis; } for (i=0;i<=n-1;i++) d[i]=max; int min; int pos; int ans=0; d[0]=0; for (i=0;i<=n-1;i++) { int k; min=max; for (j=0;j<=n-1;j++) if (!record[j] && d[j]<min) { pos=j; min=d[pos]; } if (min==max) continue; ans+=min; record[pos]=1; for (j=0;j<=n-1;j++) if (!record[j] && A[pos][j]<d[j]) d[j]=A[pos][j]; } printf("%d\n",ans); } return 0;}
Kruskal算法:
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int parent[105];int getpar(int a){if (parent[a]!=a)parent[a]=getpar(parent[a]);return parent[a];}struct Edge{int a,b;int v;}n[10005];bool cmp(struct Edge a,struct Edge b){return a.v<b.v;}int main(){int P,R;while (1){scanf("%d",&P);if (!P) break;scanf("%d",&R);int ans=0;int num=0;int i;for (i=0;i<=R-1;i++){scanf("%d%d%d",&n[i].a,&n[i].b,&n[i].v);parent[n[i].a]=n[i].a;parent[n[i].b]=n[i].b;}sort(n,n+R,cmp);for (i=0;i<=R-1;i++){int roota=getpar(n[i].a);int rootb=getpar(n[i].b);if (roota!=rootb){parent[roota]=rootb;ans+=n[i].v;num++;}if (num==P-1)break;}printf("%d\n",ans);}return 0;}
- Sicily1083(最小生成树)
- Sicily1083. Networking
- 最小比例 最小生成树
- 最小生成树&&次最小生成树
- 最小生成生成树计数
- 树+最小生成树
- 最小生成树
- 最小生成树 MST
- 最小生成树Kruskal
- kruskal 最小生成树
- 最小生成树
- 最小生成树
- 最小生成树
- 最小生成树
- 最小生成树 MST
- 最小生成树问题
- 最小生成树
- 最小生成树
- MySQL: InnoDB 还是 MyISAM?
- jquery插件总结与推荐
- Mysql Explain 详解
- 关于<c:if>没有<c:else>解决方案
- 二叉树
- Sicily1083(最小生成树)
- 页面上生成动态的时间
- 为MySQL选择合适的备份方式
- 联想笔记本的window server R2系统安装、优化及相关软件安装全过程
- Go 操作CSV格式文件
- ZOJ 3171 The Hidden 7's DP
- 分析slow log
- 字符串位置查找POS
- AS3 面试题35 在一个字符串中找出第一个只出现一次的字符