图论之点双&边双
说人话:
边双联通:
a到b的路径上无必经边
点双联通:
a到b的路径上除了a,b没有必经点
tarjan求点双联通:
代码(补图)
割点:
桥:
求点双:强制dfs时不越过割点,即可求出一个块
求边双:dfs时不越过桥
不是割点:减少2n-1
是割点:减少sigmai的大小*其他所有子树的大小
tarjan求桥,然后缩点,会形成一棵树。把树的所有叶子连起来用的边数就是答案
判断:
当且仅当无向图上不含奇环的时候就是二分图
增广路特点:非匹配边比匹配边多一条
寻找增广路:dfs
咕咕咕~
网络流:
最小割最大流定理:网络流的最大流就是整个图的最小割
dinic:类似匈牙利算法的思路,不断寻找当前最大流能加1的方案
直到不能再加
先dfs一遍,确定每个点到源点s的距离,
同时不断加边,维护当前流量
毒瘤操作:减少某条边的流量
所以就减反向边,边权为0,表示从终点到起点可扩充流量
二分图最大匹配怎么用网络流搞?
在左边建一个超级源点s,在右边建一个超级汇点t
s向每个左边的点建一个流量为1的边,右边的点向t建流量为1的边
二分图中间的点不停的寻找能加流量的路,能加就加,知道不能加
总之最大流就是最大匹配
二分图建图小技巧:
如果有x轴,y轴,且有一个坐标(x0,y0)
则就由x0向y0建一条边
国际象棋棋盘:黑白染色(黑的向白的建边)
就是最小覆盖qwq
因为消灭一行x0就是把x0那个点的所有连边都覆盖掉
消灭一列同理
所以打一次抢就相当于覆盖一撮边
最小顶点覆盖=最大匹配数
特别的,一个点也是一个路径
玄学转化二分图:
|v|是顶点个数
为什么上面说的是对的?
假设我们现在覆盖到了u,再从u选择一条出边,到了v,v就不用再来一条路径搞覆盖了。所以每多选一条边,答案就减1.
//图
但是每个点只能选出一条出边,一条入边。对于每个点,我们把它拆成两个,一个出点,一个入点。
所以就这么玄学的转化成了二分图
我们选的边在二分图上就是一个匹配
窝盟每选一条边,那么就有一个点不用再来一条路径进行覆盖了,也就是答案会在原来的基础上-1.所以我们要选出尽可能多的边来覆盖尽可能多的点,设覆盖的点最多为k,则答案就是n-k。
按照上述的转化方式,就是求转化后的二分图最大匹配
建大约n2条边然后最小路径覆盖???
还真是啊.....
然后就搞完了
匈牙利算法说人话:
找到一个点v:v是非匹配点----->把这条边设为匹配边,再找非匹配边;
v是匹配点-------->走完这条匹配边,到了边的终点,然后再找非匹配边
今天莫得糖果,所以就分白砂糖好了,一人一堆慢慢数有几颗
裸的查分约束,少的向多的建边权为1的边
大于等于:边权为0,小的向大的建边
小于等于:边权为0,还是小的向大的建边
玄学建边方向判断:
现在有这样的一条边
跑最短路
dis[v]<=dis[u]+w
跑最长路:
dis[v]>=dis[u]+w
根据选择跑的路推一推就知道谁想谁建边辣
出现等于:连大于等于,小于等于
最短or最长?
迷惑行为大赏
跑最长路
why?因为要考虑所有的约束条件啊
看一张丑陋的图就知道为什么了
显然dis[3]是2不是1
出现正环就药丸
超级源点的d为0
ysq:论是账本伪造还是刁姹算错???
[l,r]的加起来=k,则xr-xl=k
我们可以处理出前缀和数组s[i],表示前i个数的和
这样就会有s[r]-s[l-1]=k的形式的约束条件
我们拆成s[r]-s[l-1]>=k和s[r]-s[l-1]<=k这两个
边权是k或-k
当然了这个前缀和数组也是充满了毒瘤
需要我们跑最短路维护前缀和
然后dfs找有没有负环
当然还有更为玄学的直接dfs
点的权值就是s[i]的值
弄好了s[i]之后直接看是否合法即可
爆......爆搜?!
仍旧是按照二分图建图的duliu建法,每次就相当于在某一个点的所有出边的边权+1或-1,然后限制就是(x,y)这条边的边权是c
于是我们考虑爆搜(当出现冲突的时候说明无解)
图论之点双&边双的更多相关文章
- ubuntu 双线双网卡双IP实现方式
昨天金桥机房上架了一台多玩的测试机,系统是ubuntu9.04 X64的系统,母机IBM X336机器.用户需求是双线,故采用一个网卡配置电信地址,另一个网卡配置联通地址,安装好系统后配置好IP发现联 ...
- Ubuntu实现双网卡双IP双待机
Ubuntu实现双网卡双IP双待机 待机是借用了手机中的说法,其实是电脑上有两个网卡,一个无线,一个有线的.要实现无线访问外网Google Baidu查资料,有线网卡直接连接开发板.在Ubuntu上配 ...
- [Notepad++]Notepad++怎么实现双视图/双窗口?
作为windows下非常优秀的开源代码编辑器,Notepad++是工程师必备代码编辑器.相比较之下,老一辈文本编辑器如ultraedit,editplus,就显得繁琐.冗余.疲惫.我使用过Notepa ...
- Linux双线双网卡双IP双网关设置方法
机房上架了一台测试机,系统是Ubuntu 9.04 X64的系统,母机IBM X336机器.用户需求是双线,故采用一个网卡配置电信地址,另一个网卡配置联通地址,安装好系统后配置好IP发现联通地址和电信 ...
- Centos6.9下RocketMQ3.4.6高可用集群部署记录(双主双从+Nameserver+Console)
之前的文章已对RocketMQ做了详细介绍,这里就不再赘述了,下面是本人在测试和生产环境下RocketMQ3.4.6高可用集群的部署手册,在此分享下: 1) 基础环境 ip地址 主机名 角色 192. ...
- Linux 双网卡双网段通信
/********************************************************************************* * Linux 双网卡双网段通信 ...
- 高可用Mysql架构_Mysql主从复制、Mysql双主热备、Mysql双主双从、Mysql读写分离(Mycat中间件)、Mysql分库分表架构(Mycat中间件)的演变
[Mysql主从复制]解决的问题数据分布:比如一共150台机器,分别往电信.网通.移动各放50台,这样无论在哪个网络访问都很快.其次按照地域,比如国内国外,北方南方,这样地域性访问解决了.负载均衡:M ...
- 高可用Mysql架构_Mycat集群部署(HAProxy + 两台Mycat+Mysql双主双从)
既然大家都知道了Mysql分布式在大型网站架构中的作用,在这里就不再阐述.本片博客文章是基于我曾经搭建过的一个Mysql集群基础上实现的,实现过双主热备.读写分离.分库分表. 博客链接:http:// ...
- CentOS双网卡双IP设置
CentOS双网卡双IP设置 系统环境:CentOS Linux 网络环境: 两个IP地址,192.168.0.10和10.10.30.2,掩码是255.255.255.0,这两个子网的网关地址分别是 ...
- windows2003服务器双线双IP双网卡设置方法
双线双ip很好,网通用户访问网通线路,电信用户访问电信线路.但很多人会选用导入静态路由表,这个办法看似完美,其实问题很多. 1.电信用户如果被解析到网通的ip上,服务器根据路由表会返回电信线路,但用户 ...
随机推荐
- [2019上海网络赛J题]Stone game
题目链接 CSLnb! 题意是求出给定集合中有多少个合法子集,合法子集的定义为,子集和>=总和-子集和$\& \&$子集和-(子集的子集和)<=总和-子集和. 其实就是很简 ...
- Python 入门之 推导式
Python 入门之 推导式 推导式就是构建比较有规律的列表,生成器,字典等一种简便的方式 1.推导式 (1)列表推导式 : <1> 普通循环: [变量 for循环] print([i f ...
- Codeforces - 1202D - Print a 1337-string... - 构造
https://codeforces.com/contest/1202/problem/D 当时想的构造是中间两个3,然后前后的1和7组合出n,问题就是n假如是有一个比较大的质数因子或者它本身就是质数 ...
- C# 各种加密
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Sec ...
- 豆壳CMS本地安装教程
DouPHP安装教程 一.下载DouPHP程序. 解压后得到三个文件夹 将upload文件夹里面的内容复制到wamp的www的文件夹. 二.打开浏览器,输入127.0.0.1. 勾选后选择下一步 注意 ...
- 前端div+css
css基本结构: css的四种引入方式: 1.行内式:是在标记的style属性中设定CSS样式.这种方式没有体现出CSS的优势,不推荐使用. <p style="background- ...
- VB中preserve的用法
注:本文转载自:http://zhidao.baidu.com/question/161401549.html ReDim 语句用来定义或重定义原来已经用带空圆括号(没有维数下标)的 Private. ...
- Codeforces1221D. Make The Fence Great Again(dp)
题目链接:传送门 思路: 仔细想一下可以发现:每个位置最多就增加2个高度. 所以就可以有状态: f[i][j]表示保证前i个篱笆都是great时,第i个篱笆增加j的高度所需要的最小花费(1 <= ...
- GUI学习之二十三——QComboBox学习总结
我们在前面分别介绍了两种输入控件:纯键盘文本输入和步长调节器,下面我们来学习下组合框(下拉选择输入). 一.简介 1.下拉框是一个组合控件(包含一个文本显示控件和一个按钮).它默认显示最小的控件给用户 ...
- python set 集合操作
转自:https://www.cnblogs.com/alex3714/articles/5740985.html s = set([3,5,9,10]) #创建一个数值集合 t = set(&quo ...