【题目描述】
一个无向连通图的生成树是一个极小连通子图,它包括图中全部结点,并且有尽可能少的边。一棵生成树的代价是树中各条边上的代价之和。一个网络的各生成树中,具有最小代价的生成树称为该网络的最小代价生成树(minimum-cost spanning tree)。
【输入】
第一行输入结点个数n(n<100)和边的个数m,以下m行输入各边的两个结点u、v及该边上的代价。
【输出】
如果有生成树,则输出最小生成树的代价;如果没有生成树,则输出"no spanning tree"。
【输入样例】
6 10
1 2 10
1 4 30
1 5 45
2 3 50
2 5 40
2 6 25
3 5 35
3 6 15
4 6 20
5 6 55
【输出样例】
105

#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
#define R register int
using namespace std;int k,n,m,cnt,sum,ai,bi,ci,head[100],dis[100],vis[100];struct Edge
{int v,w,next;
}e[400005];void add(int u,int v,int w)
{e[++k].v=v;e[k].w=w;e[k].next=head[u];head[u]=k;
}typedef pair <int,int> pii;
priority_queue <pii,vector<pii>,greater<pii> > q;void prim()
{dis[1]=0;q.push(make_pair(0,1));while(!q.empty()&&cnt<n){int d=q.top().first,u=q.top().second;q.pop();if(vis[u]) continue;cnt++;sum+=d;vis[u]=1;for(R i=head[u];i!=-1;i=e[i].next)if(e[i].w<dis[e[i].v])dis[e[i].v]=e[i].w,q.push(make_pair(dis[e[i].v],e[i].v));}
}int main()
{memset(dis,127,sizeof(dis));memset(head,-1,sizeof(head));scanf("%d%d",&n,&m);for(R i=1;i<=m;i++){scanf("%d%d%d",&ai,&bi,&ci);add(ai,bi,ci);add(bi,ai,ci);}prim();if (cnt==n)printf("%d",sum);else printf("no spanning tree");
}

Minimum-Cost Spanning Tree相关推荐

  1. 【代码源 Div1 - 109】#454. Minimum Or Spanning Tree(最小生成树,边权按位或,贪心,并查集) CF1624G

    problem solution 题意:生成树的代价为他所有边的边权按位或得到的值,求最小生成树 贪心,一般来说,求 按位与 和 按位或 的最大值都可以从高往低逐位的贪心处理 对于当前位 b 而言,若 ...

  2. Minimum/Maximum Spanning Tree/Forest

    MST问题.对于一个有权无向图,使其原有连通块保持连通性并形成树,同时边权之和最小.换一种说法,最小生成树或者最小生成森林. 两个算法一个推论. Kruskal's Algorithm 基于贪心.将边 ...

  3. Directed Minimum Spanning Tree: Chu-Liu/Edmonds Algorithm

    我们的现代数据库大作业要求实现一个图查询系统,包括基于属性的子图查询.可达性查询(可选).最短路径查询(可选).TopK最短路径查询(可选).图形化展示(可选)等功能.分成子图同构查询小组以及可达性及 ...

  4. Minimum spanning tree HDU - 6954

    Minimum spanning tree HDU - 6954 题意: 给定n-1个点,编号从2到n,两点a和b之间的边权重为lcm(a,b).请找出它们形成的最小生成树. 2<=n<= ...

  5. 《Boost》Part1 Minimum Spanning Tree

    <Boost>Part1 Minimum Spanning Tree 1.Boost中的最小生成树介绍 MST最小生成树,是图论中的基本算法,还有一种是最大生成树,此处暂不介绍. 最小生成 ...

  6. 第十三章 ALDS1_12_A:Minimum Spanning Tree 最小生成树

    知识点 树是没有环的图 在树中,任意顶点r和顶点v之间必然存在着1条路径 生成树:拥有图G的所有顶点,并且在保证自身是树的前提下拥有尽量多的边. 最小生成树(MST):个边权值总和最小的生成树 普里姆 ...

  7. Spanning Tree Protocol介绍

    Spanning Tree Protocol(STP)主要是用在网桥上,用来避免网络回路,并制造冗余连接(也就是保证网络的可靠性). 这里只是一个大概的介绍,具体的还是要去看IEEE 的 802.1D ...

  8. 计算机网络之STP(Spanning Tree Protocol)生成树协议详解及其实验配置

    目录 1.STP概念 1.1  STP选举过程 1.1.1 根桥和根端口的选举 1.1.2 端口角色的选举 2.STP端口状态解释及转换 2.1 STP的五种端口状态 2.2 STP过程中的两种常见问 ...

  9. 生成树 Spanning tree

    生成树的原理:生成树协议(Spanning Tree Protocol)是在网络有环路时,通过一定的算法将交换机的某些端口进行阻塞,从而使网络形成一个无环路的树状结构. 生成树的作用:功能强大.可靠的 ...

  10. POJ 2516 -- Minimum Cost (最小费用最大流, 必须分开建图)

    题目链接 Description Dearboy, a goods victualer, now comes to a big problem, and he needs your help. In ...

最新文章

  1. Andorid自定义attr的各种坑
  2. 4月29日监理师课程作业
  3. 动物界的再生一个故事
  4. Flutter实战视频-移动电商-60.购物车_全选按钮的交互效果制作
  5. matlab考试资料,MATLAB复习资料
  6. windows下spark开发环境配置
  7. 拆分工作簿为多个文件_掌握这几行代码,快速拆分Excel工作簿(内含源码)
  8. 数据库事务的四大特征
  9. 这篇文章可以满足你80%日常工作!一线互联网公司面经总结
  10. 万用表怎么测量电池容量_万用表检测光电耦合器的常用技巧
  11. android web3j 代币查询_使用Web3.js查询以太币和代币余额以及转账
  12. java mvel_mvel java和脚本的融合 -- kkito的博客
  13. Collection 属性ArrayList.add方法内部调用过程
  14. 9,求整数的二进制中1的个数《剑指offer》
  15. 在SQL Server2012上搭建Northwind详细教程,SQL2000SampleDb.msi的资源
  16. ios、iphone越狱获取系统文件权限
  17. 【组合数学】指数型母函数(多重集排列问题)
  18. 【C语言】写一个程序,输出一个在100到200之间的数字,这个单位的数字是6,可以除以3。
  19. 人活着到底为了什么?
  20. 压敏电阻的原理和使用介绍

热门文章

  1. 【自动驾驶】RTK(高精度的GPS测量)
  2. Tungsten Fabric入门宝典丨TF组件的七种“武器”
  3. 【跨域】springBoot + VUE解决跨域问题几种处理方案
  4. 三运放差分放大电路分析_三运放差动放大电路
  5. 2019全球数据新闻奖揭晓
  6. 全景图如何上传至百度地图?
  7. ubuntu查看cpu温度
  8. Matplotlib绘图工具
  9. [RK3288] 相机照片进行翻转
  10. nodejs 读取写入 plist 文件,使用 plist npm 包