第三章 搜索与图论(三)(最小生成树,二分图)

一、最小生成树算法

稠密图使用prim算法,稀疏图使用kruskal算法

 

   二、prim算法求最小生成树

prim和dijkstra算法类似,都是找到符合某种条件的点,然后更新。prim使用到已经构成的部分最小树所有结点中最小的距离。dijkstra算法是使用到起点最小的距离。

#include<bits/stdc++.h>
//858 prim最小生成树 (稠密图做法)
using namespace std;
const int N=210,INF=0x3f3f3f3f;
int n,m;
int g[N][N];
int dist[N];
bool st[N];
int prim()
{
   int res=0;
   for(int i=0;i<n;i++)
   {
       //找最短的边
       int t=-1;
       for(int j=1;j<=n;j++)
       {
           //只要这个点没有进入集合,或者还没初始化
           //没有进入集合而且边权较少
           if(!st[j]&&(t==-1||dist[t]>dist[j]))
              t=j;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值