随笔分类 -  图论

ZKW优化费用流
摘要:#include using namespace std; typedef long long ll; double pi=acos(-1.0); double eps=1e-8; const int mod=1e9+7; bool vis[200001]; int dist[200001]; int n,m,s,t,ans=0; int nedge=-1,p[200001],c[200001... 阅读全文

posted @ 2017-09-10 11:47 very_czy 阅读(400) 评论(0) 推荐(0)

codeforces 786B legacy 线段树建图
摘要:http://www.cnblogs.com/jianrenfang/p/6622404.html 会长的代码很朴实,很平易近人。就是区间最短路。 阅读全文

posted @ 2017-05-05 14:25 very_czy 阅读(222) 评论(0) 推荐(0)

并查集+按秩合并
摘要:#include using namespace std; const int N = 5e5+50; int n,lst; struct UnionTable { int f[N],s[N],v[N],d[N]; void init(int n) { for(int i=1; is[f2]) f[f2]=f1,v[f2]=c,s[f1]+=s[f2... 阅读全文

posted @ 2017-04-14 20:38 very_czy 阅读(1121) 评论(0) 推荐(0)

POJ 1182 食物链 带权并查集
摘要:动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是"1 X Y",表示X和Y是同类。 第二种 阅读全文

posted @ 2016-08-01 20:42 very_czy 阅读(123) 评论(0) 推荐(0)

HDU 1848 2SAT 输出字典序最小
摘要:告诉你两两冲突的序列,让输出字典序最小。 一开始老老实实tarjan,写完了发现后面完全不能好弄,因为选了第一个点,你没办法快速找出全部对立组,只能找出本来在一个pair中的那个对立组,而找不出给定的那个随意的对立组。所以直接从1开始染色,弄不出来就染2。以此类推。 这个题还有一个教训就是,点要多开 阅读全文

posted @ 2016-07-30 11:38 very_czy 阅读(426) 评论(0) 推荐(0)

POJ 3683 2SAT
摘要:这道题涨了很多姿势。 首先,以后可能不需要重新建图+拓扑排序+染色了。 看了赵爽的论文。 下面说的简略一些,详细情况可自行百度。 首先是重新建图,重新建图为的是求拓扑序,以便于染色,出答案。而本身我们tarjan完的就是个拓扑逆序的。因为每个团求出来之前,它之后的所有团肯定都求出来,否则这个团是全都 阅读全文

posted @ 2016-07-29 21:45 very_czy 阅读(355) 评论(0) 推荐(0)

HDU 3622 2-SAT
摘要:第一道2-SAT 题意:有N对点,给出N对点的坐标,要求找出一个最大的半径R,使得可以从每对点中选择一个点,并且这N个点以自己为圆心,半径为R的圆两两不相交。 对于2*N个点,如果两个点之间“矛盾”,即两个圆相交,就连一条边。意思是:我选了这个点之后,无法选另外一组的某个点,就只能选某个点的兄弟点。 阅读全文

posted @ 2016-07-29 14:54 very_czy 阅读(204) 评论(0) 推荐(0)

POJ 1236 tarjan+缩点
摘要:题意: N(2<N<100) 各学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输,问题1:初始至少需要向多少个学校发放软件,使得网络内所有的学校 最终都能得到软件。2,至少需要添加几条传输线路(边),使任意向一个学校发放软件后,经过若干次传送,网络内所有的学校最终都能得 阅读全文

posted @ 2016-07-27 16:49 very_czy 阅读(180) 评论(0) 推荐(0)

tarjan 强连通 模板
摘要:2SAT中的重要知识 以前学过忘记存了。现在存一发免得再忘了 阅读全文

posted @ 2016-07-27 15:20 very_czy 阅读(153) 评论(0) 推荐(0)

codeforces 700B
摘要:在给的点中选出一对对点,让每两个点的距离和最大 乱搞,做过这种关于类型的,这次算比较简单的。 阅读全文

posted @ 2016-07-25 21:04 very_czy 阅读(178) 评论(0) 推荐(0)

codeforces 696B puzzle
摘要:求随机dfs序的期望。 我们来看到一个点之后是什么情况。 一个点p有很多儿子,其中一个是x; 如果要求x的期望,那么先看: 如果从父亲直接到这个点,那就是父亲的期望加一; 如果还走其他的点,那么最后一步肯定还是要加一(因为你总要花一步从别的店跳过来),所以无论怎样都要父亲的期望加一。剩下来再看,如果 阅读全文

posted @ 2016-07-22 20:07 very_czy 阅读(216) 评论(0) 推荐(0)

codeforces 698B fix a tree 时间戳
摘要:把一个父亲数组变成棵树的最小改动。 一想就只有环或者森林,用时间戳,每次爆搜就行,要么剖环,要么连树。 阅读全文

posted @ 2016-07-22 15:16 very_czy 阅读(175) 评论(0) 推荐(0)

HDU 5727 Necklace 二分图匈牙利最大匹配,
摘要:给你阴阳球各n个,某些阳球只要周围有一个阴球,就会变暗,问最后至少要变暗多少个。 看了题解,说是全排列阴球,因为成环,所以就能变成8!复杂度,就能跑了。 然后每种情况,如果一个阳球碰上周围两个阴球都不变暗,那么久能放在这个位置,此时的最大匹配就是这种方案,最大可以放,并且不变暗的,个数。拿n一减,完 阅读全文

posted @ 2016-07-20 22:54 very_czy 阅读(290) 评论(0) 推荐(0)

NOIP 2010 关押罪犯
摘要:二分图判断+二分 给一堆点、边,两两之间有一个值,让分成两个集合,让内部最大边权最小。 排序+二分+二分图判定 存个二分图模板#include <iostream>#include <functional>#include <algorithm>#include <complex>#include 阅读全文

posted @ 2016-05-01 22:07 very_czy 阅读(154) 评论(0) 推荐(0)

最小生成树kruskal算法 适合稀疏图
摘要:#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <vector>#include <map>#include <set>#include <stack>#include <queue>#inc 阅读全文

posted @ 2016-04-14 16:22 very_czy 阅读(553) 评论(0) 推荐(0)

最小生成树prime+邻接表+优先队列
摘要:#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <vector>#include <map>#include <set>#include <stack>#include <queue>#inc 阅读全文

posted @ 2016-04-14 16:04 very_czy 阅读(277) 评论(0) 推荐(0)

HDU 1162 prime+邻接矩阵
摘要:prime+邻接矩阵模板 #include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <vector>#include <map>#include <set>#include <stack>#includ 阅读全文

posted @ 2016-04-14 15:36 very_czy 阅读(111) 评论(0) 推荐(0)

自己写的Dijkstra模板
摘要:话不多说,邻接表+队列优化。 #include <cstdio>#include <iostream>#include <cmath>#include <cstring>#include <cstdlib>#include <algorithm>#include <queue>using names 阅读全文

posted @ 2016-03-26 16:11 very_czy 阅读(183) 评论(0) 推荐(0)

导航