图论
文章平均质量分 92
verjun
这个作者很懒,什么都没留下…
展开
-
关于图论中Tarjan算法的一些总结
Tarjan算法求强连通分量前置知识1.1.1.有向图:一个只由有向边构成的图,Tarjan算法只适用于有向图。2.2.2.强连通:对于两个点A,BA,BA,B,如果他们之间可以相互到达,那么就称点A,BA,BA,B强联通。对于一个图GGG,如果其任意两个顶点都是强联通的,那么这个图就是一个强联通图。对于一个非强联通图GGG,如果其某一子图G′G'G′为强联通图,那么G′G'G′就被称...原创 2019-10-31 21:18:54 · 541 阅读 · 0 评论 -
树的直径
定义树上任意两点间最短距离的最大值。两种做法dfs(bfs)算法流程step 1:step\space 1:step 1:随便选取一个点ppp,dfs找到离ppp最远的点qqq。step 2:step\space 2:step 2:对qqq进行同样的dfs,树上所有点离qqq的最短距离则为该树的直径。时间复杂度:O(n)O(n)O(n)正...原创 2019-10-21 10:41:45 · 330 阅读 · 0 评论 -
2019.10.13作业总结
主要知识点:差分约束系统,Tarjan算法T1:小K的农场传送门解析:差分约束系统模板题,注意用dfs的spfa来优化找负环的时间。#include<bits/stdc++.h>#define inf 2147483647using namespace std;inline int Read(){ int x=0,f=1; char ch=getchar(); wh...原创 2019-10-14 21:06:17 · 148 阅读 · 0 评论 -
分数规划类问题选讲
0-1分数规划模型给定一些二元组(xi,yi)(x_i,y_i)(xi,yi),让你选择其中的一些二元组,使xix_ixi的和与yiy_iyi的和比值最大(小),即求max或min(∑xi∑yi)\max或\min(\frac{\sum x_i}{\sum y_i})max或min(∑yi∑xi)通用解法设t=∑xi∑yit=\frac{\sum x_i}{\sum y...原创 2019-10-14 20:30:11 · 755 阅读 · 0 评论 -
并查集及其扩展域
普通的并查集定义首先给出一道例题:luoguP1551亲戚题目描述规定:xxx和yyy是亲戚,yyy和zzz是亲戚,那么xxx和zzz也是亲戚。如果x,yx,yx,y是亲戚,那么xxx的亲戚都是yyy的亲戚,yyy的亲戚也都是xxx的亲戚。输入格式第一行:三个整数n,m,pn,m,pn,m,p,(n≤500000,m≤500000,p≤500000)(n\le500000,m\le500...原创 2019-10-06 17:07:29 · 732 阅读 · 0 评论 -
图论进阶——二分图匹配(匈牙利+网络流算法)
前置知识二分图染色注意事项首先,这张图需要是一个二分图二分图匹配定义在一个二分图内找出一些边,使得任何一个图中的点都被至多一条边连接,这些边的集合叫做一个二分图匹配。如果存在一种二分图匹配方案,使得选出的边的数量最多,那么这就叫做二分图的最大匹配。如果该二分图的最大匹配方案中,所有的顶点均被一条边所连接,那么这个方案就叫做二分图的一个完美匹配。二分图匹配算法1.1.1.匈牙利算法...原创 2019-09-26 21:35:20 · 1602 阅读 · 0 评论 -
图论进阶——二分图染色
二分图定义二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。下面放上一张图:前面的讲解可能有一些不太好懂,这里给出一个简洁易懂的解释:对于任意一个连通图,每个点可以被染成000或111...原创 2019-09-25 21:38:32 · 3609 阅读 · 0 评论 -
图论进阶——差分约束系统
前置知识最短路算法(spfa)例题给定一组不等式{xa1−xa2≤b1 xa3−xa4≤b2 ...... xan−1−xan≤bn/2\left\{\begin{aligned}x_{a_1}-x_{a_2}\le b_1\space \space\space...原创 2019-09-21 16:01:46 · 544 阅读 · 0 评论 -
图论初步——最短路(2)
Dijkstra算法优化关于Dijkstra详见图论初步——最短路(1)前面的文章中,我们提到了DijkstraDijkstraDijkstra算法的核心就是每次找到剩余的点中的最小值。这一步用了一个forforfor循环,很花时间。所以如何快速找到剩下的点的最小值,就是我们要解决的问题。方法1:线段树每次找到最小值及其编号,然后赋为极大值,以不影响后面取最小值。时间复杂度:O(l...原创 2019-08-07 16:13:55 · 350 阅读 · 0 评论 -
图论初步——最短路(1)
最短路分类单源最短路:从一个点到其他所有点的最短路算法:Dijkstra,spfaDijkstra,spfaDijkstra,spfa多源最短路:从所有点到另外点的最短路算法:FloydFloydFloydFloyd算法时间复杂度:O(n3)O(n^3)O(n3)适用范围:0<=n<=3000<=n<=3000<=n&l...原创 2019-08-07 14:50:47 · 480 阅读 · 0 评论 -
图论初步——存图方式
图的定义图是由若干给定的点及连接两点的线所构成的图形图的例子存图方式邻接矩阵优点:简单好写,实现不易出错缺点:空间复杂度高,达到了O(n2)O(n^2)O(n2)的复杂度,不适用于大部分题建图代码实现for(int i=1;i<=m;i++){ //m为边数 cin>>x>>y>>w; //x到y有一条权值为w的边 edge[x...原创 2019-08-07 09:23:27 · 507 阅读 · 0 评论