五一培训 清北学堂 DAY5

今天是吴耀轩老师的讲解~

今天的主要内容:图论

如何学好图论?

学好图论的基础:必须意识到图论!

邻接矩阵存图:

 

其缺点是显而易见的:1. 空间复杂度O(n^2)不能接受;2.有重边的时候很麻烦;

优点很简单啦:好写qwq(是不是有点糊弄)

邻接表

一些vector的细节:

生成树

 

既然它是一颗树,那么应该满足无环!

比如这样它就是一颗有环树!

 

看个题:

实际上就是让你求最小瓶颈树!qwq

显然红色的更优!

这些是做这个题的做法:

并查集

Kruskal

判断是否构成环:并查集判断是否在一颗树上!

贴上Kruskal的代码:

#include <bits/stdc++.h>

using namespace std;

const int maxn = 1000005;
struct edge {
    int u, v, w;
}edg[maxn];
int n, m, p[maxn], ans = 0;

bool cmp(edge a, edge b)
    {return a.w < b.w;}
int findp(int t) 
    {return p[t] ? p[t] = findp(p[t]) : t;}
bool merge(int u, int v)
{
    u = findp(u); v = findp(v);
    if (u == v) return false;
    p[u] = v; return true;
}
int main()
{
    cin >> n >> m;
    for (int i = 1, u, v, w; i <= m; i++)
        cin >> u >> v >> w, edg[i] = (edge){u, v, w};
    sort(edg + 1, edg + m + 1, cmp);
    
    for (int i = 1; i <= m; i++)
        if (merge(edg[i].u, edg[i].v))
            ans = max(ans, edg[i]. w);
    cout << ans << endl;
}

 

转载于:https://www.cnblogs.com/xcg123/p/10821884.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值