最小生成树(Prim算法)
来源:互联网 发布:java zip压缩并加密 编辑:程序博客网 时间:2024/05/22 00:08
/*
1 0
2 31 2 372 1 171 2 683 71 2 192 3 113 1 71 3 52 3 893 1 911 2 325 71 2 52 3 72 4 84 5 113 5 101 5 64 2 120
Sample Output
0171626*/
#include<stdio.h> #include<string.h> #define N 1005 #define INF 0x3f3f3f int cost[N][N];//结点u到v的权值 int mincost[N];//在集合S中第一个节点到N的节点的最小权值 bool s[N];//标记是结点是否加入到了集合S中 int n,m; int Prim() { int i,u; for(i=1;i<n+1;++i){ mincost[i]=INF; s[i]=false; } mincost[1]=0; int res=0; while(true){//这个永真式可以换成一个for循环n-1次并且第一个if int v=-1; //要变下 for(u=1;u<n+1;++u){ if(!s[u]&&(v==-1||mincost[u]<mincost[v])){ v=u; } } if(v==-1)break; s[v]=true; res+=mincost[v]; for(u=1;u<n+1;++u){ mincost[u]=mincost[u]<cost[v][u]?mincost[u]:cost[v][u]; } } return res;}int main(){ while(~scanf("%d",&n)&&n){ scanf("%d",&m); memset(cost,INF,sizeof(cost)); for(int i=0;i<m;++i){ int a,b,c; scanf("%d%d%d",&a,&b,&c); cost[a][b]=cost[a][b]<c? cost[a][b]:c; cost[b][a]=cost[a][b]; } printf("%d\n",Prim()); } return 0; }
0 0
- 最小生成树(prim算法)
- 最小生成树算法(prim&kruskal)
- 最小生成树(prim算法)--poj1258
- 最小生成树(Prim算法)
- HDU1863---最小生成树(prim算法)
- 最小生成树(Prim算法)
- 最小生成树(prim算法)
- 最小生成树(prim算法模板)
- 最小生成树prim算法(贪心)
- 数据结构--最小生成树(Prim算法)
- Prim算法(最小生成树)
- 数据结构:最小生成树(Prim算法)
- 最小生成树(hdu1233)Prim算法
- 最小生成树(Prim算法)
- 最小生成树(Prim算法)
- 最小生成树prim(普里姆)算法
- 最小生成树(Prim算法)
- 最小生成树Prim算法(邻接矩阵)
- 提示is not a symbolic link警告的去除方法
- curl忽略证书
- 4521: [Cqoi2016]手机号码
- 线材基础知识01——铜铝绝缘线截面积与电流关系
- java之spring框架初识
- 最小生成树(Prim算法)
- php 通过curl上传文件
- UVA
- 水仙花
- RecyclerView关于添加/删除Item的那些坑~~~
- linux笔记-磁盘管理
- 快速简单理解i2c标准协议
- Android之获取控件的宽高和手机屏幕的宽高
- 本地测试环境搭建(二)