随笔分类 - ACM / 图论
矩阵转二分图 涂色问题
摘要:大意: 矩阵二行二列相交四个点三个黑另一个自动黑 问最小权值涂全黑 我们将行与列分成一个二分图 i,j涂成黑色时 就连一条ij的边 我们发现,自动涂黑的操作并不改变整个图的连通性,所以只需要构造一棵最小生成树即可 复杂度为n^2(nlogn);
二分图 二分图匹配 匈牙利算法
摘要:二分图定义 类比函数 x集合和y集合互相联系 但x集合与y集合内部本身没有任何边 二分图匹配 在二分图的基础上 1对1或1对0连线 主要得考虑如何建图 匈牙利算法: 秉承着先选先改,没有条件创造条件也要选的思路 我们遍历每一个需要匹配的点 用一个find函数来寻找他能不能找到儿子 并用一个flag数
最小生成树 kruscal 堆优化 板子
摘要:每次都取出权值最小的边 并且保证他不会出现环(用并查集维护) 最小边用堆维护 #include<bits/stdc++.h> #include<iostream> using namespace std; typedef long long ll; typedef pair<ll,ll> P; co
最短路/判负环/ 板子
摘要:SPFA/BELLMAN-FORD算法 复杂度最大(VE) #include<bits/stdc++.h> const long long inf=2147483647; const int maxn=10005; const int maxm=500005; using namespace std
图论 有向图 判断强连通图
摘要:什么是强连通图 对一个有向图,如果每个节点都存在到达其他任何节点的路径,那么就称它是强连通的。 如何判断强连通图 任取有向图G的某结点S,从S开始进行深度优先搜索,若可以遍历G的所有结点,则将G的所有边反向,再次从S开始进行深度优先搜索,如果再次能够遍历G的所有结点,则G是强连通图,两次搜索有一次无