随笔分类 -  C++_图论

学习笔记
摘要:算法 最大权闭合子图 思路 首先,如果没有租借这个条件,就是一个最大权闭合子图的模板了,让我们背诵最大权闭合子图的建图方法: 将源点与正权点连边,流量为权值; 将负权点与汇点连边,流量为权值相反数(正数); 将原图中的边相连,流量为正无穷。 最大权闭合子图$ =$ 原图正权点权值和$ -$ 最小割 阅读全文
posted @ 2020-11-23 21:21 When_C 阅读(87) 评论(0) 推荐(0)
摘要:prufer编码 $prufer$序列可以将一个代标号的$n$个节点的树用$[1,n]$中的$n-2$个整数表示,可以理解为完全图的生成树与数列之间的双射。 出自OI Wiki 有关无根树转$prufer$编码,$prufer$编码转无根树等内容可以去$OI Wiki$上看 这里只介绍**$pruf 阅读全文
posted @ 2020-11-18 21:50 When_C 阅读(142) 评论(0) 推荐(0)
摘要:思路 看到是无向图最小环,考虑$Floyd$,但是$n^3$的复杂度太高了,怎么办? 观察题面,发现两个数只要与起来是$1$就有边,进而想到只要有一个二进制位有三个以上的数字是$1$,就能构成$3$元环。考虑最坏情况,即每个位都只有两个数为$1$,就有$64 \times 2=128$种,那么只要$ 阅读全文
posted @ 2020-11-09 08:07 When_C 阅读(88) 评论(0) 推荐(0)
摘要:前置芝士 $Dilwoth$定理$or$你已经做了导弹拦截 什么是$Dilworth$定理? 对于任意有限偏序集,其最大反链中元素的数目必等于最小链划分中链的数目. ​ --百度百科 或许你可以通过这篇神的博客学习一下。 事实上,对于本题而言,所有的比分信息就是偏序集,而我们要求的就是最小链划分,即 阅读全文
posted @ 2020-11-03 16:45 When_C 阅读(126) 评论(1) 推荐(0)
摘要:点双 一个点为割点当且仅当: 非根节点无返祖边,即 \(dfn_x \leq low_v\) 根节点有两个儿子以上 所以不用开栈 void Tarjan(int x){ dfn[x] = low[x] = ++ tim; int sz = 0; for(int i = head[x]; i; i = 阅读全文
posted @ 2020-10-30 19:26 When_C 阅读(206) 评论(1) 推荐(1)
摘要:###题意 给$n$个点,要求构造一张简单无向图,其中每个点入度都为$3$,若可以构造则输出边数与边(顺序随意),无法构造则输出$Impossible$ ###算法 推理$qwq$ ###思路 首先,整张图的度数和应为$n\times3$,而每连一条边度数和增加$2$,故$n$为奇数肯定不合法。另外 阅读全文
posted @ 2020-10-10 16:58 When_C 阅读(242) 评论(0) 推荐(0)
摘要:###题意 给出一张n (\(n\leq1000\)) 点m (\(m\leq2000\)) 边的有向图,要求判断负环,并升序输出可以到负环的点 (多组数据 \(T\leq125\)); ###算法 建反图 + SPFA判负环 + dfs染色 ###思路 当建完反图后,负环是不变的,原图上所有能到负 阅读全文
posted @ 2020-10-10 08:18 When_C 阅读(100) 评论(0) 推荐(0)
摘要:###题意 平面上有n(\(n\leq1000\))个点,你的任务是让所有n个点联通。为此,你可以新建一些边,费用等于两个端点的欧几里得距离平方。另外还有q(\(q\leq8\))个套餐可以购买,如果你购买了第i个套餐,该套餐中的所有结点将变得相互连接。第i个套餐的花费为$C_i$。 ###算法 最 阅读全文
posted @ 2020-10-09 11:56 When_C 阅读(105) 评论(0) 推荐(0)
摘要:这里只写Kruskal版本(太蒟了qwq) ###大致思路 首先求出最小生成树,我们枚举每条不在最小生成树上的边,并把这条边放到最小生成树上面,然后就一定会形成环,那么我们在这条环路中取出一条最长的路(除了新加入的那一条边)。最终我们得到的权值就是次小生成树的权值。 ###代码实现 #include 阅读全文
posted @ 2020-10-09 10:57 When_C 阅读(107) 评论(0) 推荐(0)