![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论基础
文章平均质量分 72
*大祺
一只菜鸟ᶘ ᵒᴥᵒᶅ
展开
-
单源最短路的建图方式(Dijkstra)
1.热浪(Acwing 1129)2.信使(Acwing 1128)3.香甜的黄油(Acwing 1127)4.最小花费(Acwing 1126)方法一(求边权乘积最大):方法二(用 log 函数 转化为加法,传统“最短路”):5.最优乘车(Acwing 920)6.昂贵的聘礼(Acwing 903)重点:建图 主要为Dijkstra的堆优化板子和朴素版(看数据范围)再次看看时间复杂度[ n 为点数,m 为边数 ]:朴素版:O(),堆优化版:O( (n+m)logm )。原创 2023-01-29 21:05:42 · 591 阅读 · 0 评论 -
连通性1(Tarjan 理论版)
一、无向图割点、桥、双连通分量Tarjan 算法求割点和桥(割边)求“割点”的代码 边双和点双连通分量边双连通分量 和 点双连通分量 的缩点 二、有向图强连通分量1.有向图的弱连通与强连通2.强连通分量Kosaraju算法Tarjan 算法(求强连通分量)原创 2023-01-26 18:16:12 · 762 阅读 · 0 评论 -
[NOIP2007 提高组] 树网的核
设T=(V,E,W)是一个无圈且连通的无向图(也称为无根树),每条边都有正整数的权,我们称T为树网(),其中V,E分别表示结点与边的集合,W表示各边长度的集合,并设T有n个结点。路径:树网中任何两结点a,b都存在唯一的一条简单路径,用d(a,b)表示以a,b为端点的路径的长度,它是该路径上各边长度之和。我们称d(a,b)为a,b两结点间的距离。D(v,P)=min{d(v,u)},u为路径P上的结点。...原创 2022-08-12 22:05:35 · 345 阅读 · 2 评论 -
最短路记录路径(Dijkstra&Floyd)
窝这里Dijkstra是用的优先队列优化版的,适用于那些个卡时间卡空间的题目,用前向星存的图,老师上课讲的二维数组版的也没怎么听(QAQ)后面有空再补吧~先贴代码:Floyd (先来简单的)#include<iostream>#include<stdio.h>#include<string>using namespace std;typedef long long ll;const int inf=0x3f3f3f3f;int t,n,m,dis原创 2022-05-25 13:05:35 · 413 阅读 · 0 评论 -
拓扑排序三题(菜肴制作&杂物&最大食物链计数)
DAG:有向无环图图的建立很重要一、【HNOI]2015菜肴制作传送门1思路&技巧:倒过来看,因为要让尽可能小的数字先选,也就是大的后选,整个图倒着建,先选最大的、入度为0的点,输出时再倒过来。#include<iostream>#include<queue>#include<cstring>using namespace std;const int M=1e5+6;int ct,T,n,m,head[M],inc[M],...原创 2022-05-19 20:24:45 · 176 阅读 · 0 评论 -
最小生成树(Prim&Kruskal)
目录先贴几个概念(Prim算法来点板子题:Kruskal算法先贴几个概念(时间复杂度:之前有说Prim更适合“稠密图”,Kruskal更适合“稀疏图”,(因为Kruskal只与边有关嘛)。不过现在的说法貌似是,优化后都差不太多了,但Kruskal代码短,好写~(所以大家更青睐于Kruskal..Prim算法都说prim和Dijstra算法很像,是“双胞胎算法”,可以把它们写得很像(说是也就一个if条件的不同),Prim算法也可以写一个dis[]数组,Pr.原创 2022-05-14 13:09:49 · 305 阅读 · 1 评论 -
图论基础&拓扑排序
1.图的存储图的BFS遍历2.欧拉图(即能不重复得走完所有边且起点和终点相同的为欧拉图,只能不重复走完所有边但不能回到起点的是半欧拉图)3.拓扑排序1)概念引入一个工程常被分为多个小的子工程,这些子工程被称为活动(Activity),在有向图中若以顶点表示活动,有向边表示活动之间的先后关系,这样的·图简称为AOV网。在AOV网中为了更好地完成工程,必须满足活动之间先后关系,需要将各活动排一个先后次序即为拓扑排序。(其实这个在我们生活中很常见啦,比如学校要.原创 2022-04-30 12:38:38 · 1689 阅读 · 0 评论