【总结】最小树形图 朱刘算法

本文主要介绍了有向图的最小生成树——最小树形图的概念,重点讲解了朱刘算法的思路和步骤,包括从每个点选择最小边、处理环的操作以及算法的复杂度分析。同时,提供了一道模板题BZOJ4349作为实践应用的示例。
摘要由CSDN通过智能技术生成

前言

省选复习的时候,发现没写博客。。。

来补一篇。。

最小树形图

就是有向图的最小生成树,满足从根出发,能到达所有节点,且边权和尽可能小。

朱刘算法

很暴力的方法,每个点在指向它的边中,选择最小的一条(根节点不选)。

然后答案加上每个点选出的边权。

然后可能有环,就缩环成点,然后改一下边权

在这里插入图片描述
val’-=val,表示之后若选择val’,则必须断开val

一直这样做下去,直到某一次找不到环了就停止。

复杂度 O ( N ∗ M ) O(N*M) O(NM)

模板题

BZOJ4349

第一次是最小树形图,第二次及以后攻打,就用最小的即可。

#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<vector>
#define SF scanf
#define PF printf
#define INF 0x3FFFFFFF
#define MAXN 60
#define MAXM 2600
using namespace std;
struct Edge{
   
	int u,v;
	double val;	
	Edge() {
   }
	Edge(int u1,int v1,double val1):u(u1),v(v1),val(val1) {
   }
}edge[MAXM];
int nu
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值