随笔分类 - 图论
摘要:树链剖分的思想及能解决的问题 树链剖分用于将树分割成若干条链的形式,以维护树上路径的信息。 具体来说,将整棵树剖分为若干条链,使它组合成线性结构,然后用其他的数据结构维护信息。 树链剖分(树剖/链剖)有多种形式,如 重链剖分,长链剖分 和用于 Link/cut Tree 的剖分(有时被称作“实链剖分
阅读全文
摘要:流网络: G=(V,E)是一个有向图,图中每条边(u,v)有一个非负的容量值c(u,v)>=0, 相关定理及证明论文参考 dicnic(n^2m) #include<bits/stdc++.h> using namespace std; const int N=1e4+10; const int M
阅读全文
摘要:欧拉路径:如果图G中的一个路径包括每个边恰好一次,则该路径称为欧拉路径(Euler path)。 欧拉回路:如果一个回路是欧拉路径,则称为欧拉回路(Euler circuit)。 具有欧拉回路的图称为欧拉图(简称E图)。具有欧拉路径但不具有欧拉回路的图称为半欧拉图。 存在条件 一、无向图 1 存在欧
阅读全文
摘要:kruskal 1.建立并查集,初始每个点为一个集合。 2.每次找到剩余的最短边加入并查集。 #include<bits/stdc++.h> using namespace std; int n,m; int ans; int f[100086]; struct ret { int x,y,z; }
阅读全文
摘要:Dijkstra算法和SPFA算法都可以用于求单源最短路,前者可以用小根堆进行优化,后者用就是用队列优化过的Bell-man Ford,下面说一说这两者的区别: Dijkstra算法是基于贪心和DP的思路,一开始先将所有点到原点的距离设置为无穷大,特别的是dis[s]=0,此处的s为原点,它是每次找
阅读全文
摘要:Tarjan 算法是基于深度优先搜索的算法,用于求解图的连通性问题。Tarjan 算法可以在线性时间内求出无向图的割点与桥,进一步地可以求解无向图的双连通分量;同时,也可以求解有向图的强连通分量、必经点与必经边。 如果你对上面的一些术语不是很了解,没关系,我们只要知道 Tarjan 算法是基于深度优
阅读全文
摘要:二分图的判定 不存在奇数环。 可以通过匈牙利算法,染色判定。 bool dfs(int x,int t) { st[x]=t; for(int i=head[x];i;i=ne[i]) { int y=ver[i]; if(!st[y]) { if(!dfs(y,3-t)) return 0; }
阅读全文