正睿OI国庆DAY2:图论专题

正睿OI国庆DAY2:图论专题

dfs/例题

判断无向图之间是否存在至少三条点不相交的简单路径

一个想法是最大流(后来说可以做,但是是多项式时间做法

旁边GavinZheng神仙在谈最小生成树

陈主力说做法是dfs

首先两个点一定在点双联通分量里

  1. 点双是简单环,只有两条,不存在
  2. 猜测其他情况存在三条

双联通分量分解

输出情况可以用dfs树判,讨论非树边覆盖情况

  1. 内包含
  2. 下面分叉连到上面
  3. 相交

输出点即可

BFS/例题

BFS树没有跳跃边

计数/动态规划有用吧

树上bfs序好像可以判断距离?

边权为0/1 双端队列BFS

最短路

dijkstra有时候可以用桶代替堆(注意值域)

例题:codeforces 575G

最小生成树

  1. 最小瓶颈路
  2. 次小生成树
  3. 生成树计数/Matrix tree

割点/桥

点双的割点相邻关系形成圆方树

边双的桥形成边双树

例题:codeforces700C

答案为1:求S到T某条路径上的所有的桥

答案为2:每次枚举一条路径上的边,求所有的桥

其他知识点

  1. 欧拉回路
  2. 2-SAT

做网络流题

杂题

  1. AGC 038D(构造桥连通块+分析)
  2. 计蒜之道2016 百度地图的实时路况(缺点最短路)
  3. sums GYM100753M

    找模数,建\(\min(a)*n\)条边算最短方案

    可以优化,边权优化成0-1

    bitset加速:快速求出bit<10^5> a[10^5]

  4. bitset + 传递闭包

陈主力还说图论的一般都是网络流~

原文地址:https://www.cnblogs.com/lcyfrog/p/11617167.html

时间: 2024-08-26 08:57:24

正睿OI国庆DAY2:图论专题的相关文章

正睿OI DAY3 杂题选讲

正睿OI DAY3 杂题选讲 CodeChef MSTONES n个点,可以构造7条直线使得每个点都在直线上,找到一条直线使得上面的点最多 随机化算法,check到答案的概率为\(1/49\) \(n\leq k^2\) 暴力 \(n\geq k^2\),找点x,求直线l经过x,且点数最多,点数\(\geq k+1\),递归,否则再找一个 One Point Nine Nine 现在平面上有\(n\)个点,已知有一个常数\(D\). 任意两点的距离要么\(\leq D\),要么\(\geq 1.

UVa10048_Audiophobia(最短路/floyd)(小白书图论专题)

解题报告 题意: 求所有路中最大分贝最小的路. 思路: 类似floyd算法的思想,u->v可以有另外一点k,通过u->k->v来走,拿u->k和k->v的最大值和u->v比较,存下最小的值. #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #define inf 0x3f3f3f3f using namespace std;

UVa10397_Connect the Campus(最小生成树)(小白书图论专题)

解题报告 题目传送门 题意: 使得学校网络互通的最小花费,一些楼的线路已经有了. 思路: 存在的线路当然全都利用那样花费肯定最小,把存在的线路当成花费0,求最小生成树 #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #define inf 0x3f3f3f3f using namespace std; int n,m,_hash[1110][1110],vis

UVa10099_The Tourist Guide(最短路/floyd)(小白书图论专题)

解题报告 题意: 有一个旅游团现在去出游玩,现在有n个城市,m条路.由于每一条路上面规定了最多能够通过的人数,现在想问这个旅游团人数已知的情况下最少需要运送几趟 思路: 求出发点到终点所有路当中最小值最大的那一条路. 求发可能有多种,最短路的松弛方式改掉是一种,最小生成树的解法也是一种(ps,prime和dijs就是这样子类似的) #include <iostream> #include <cstdio> #include <cstring> #include <

UVa10034/POJ2560_Freckles(最小生成树)(小白书图论专题)

解题报告 题意: 把所有点连起来,求使用的墨水最少. 思路: 裸最小生成树. #include <iostream> #include <cstring> #include <cstdio> #include <cmath> #define inf 0x3f3f3f3f using namespace std; struct N { double x,y; } node[110]; int vis[110],n; double mmap[110][110],

9.22 正睿提高4

目录 2018.9.22 正睿提高5 A 数组计数(DP) B 旅行(思路) C 进化(思路 二进制拆分) 考试代码 B C 2018.9.22 正睿提高5 时间:3.5h 期望得分:100+80+30 实际得分:100+80+30 比赛链接 T2一直以为类似某道虚树题(SDOI2015)..到最后只想写暴力(写了暴力也该想到了啊 但是已经在划水了). A 数组计数(DP) 题目链接 DP.前缀和优化一下就行了. 刚开始滚动数组又少清空了mmp.. #include <cstdio> #inc

10.2 正睿国庆集训测试1

目录 2018.. Test 总结 A 陈太阳与取模 B 陈太阳与路径(树形DP) C 陈太阳与开关 考试代码 B C 2018.. Test 时间:3.5h 期望得分:100+50+20 实际得分:40+45+20 比赛链接 总结 感觉自己是个zz A 陈太阳与取模 题目链接 \[\begin{aligned}c\%x&\equiv (c\%A)\%x\\c\%x&\equiv (c-\lfloor\frac ca\rfloor*a)\%x\\c\%x&\equiv c\%x-\

图论专题总结

T1菜肴制作:拓扑排序+大根堆 卡了好一会儿才过掉.正序拓扑的话贪心策略会出错. 保证先输出小的,倒序拓扑保证先搞大的.然后插到大根堆里. 每次取出最大的(堆顶)进行拓扑扩展.pop出来的直接扔进栈里. 多判有点恶心.记得清空(我就因为tot没清空,样例第三组单测正确,多测就错..) 还有一个特殊判断:栈内元素个数与本身元素个数是否相符. 不相符就是剩下了环搞不出来,impossible就行了. #include<iostream> #include<cstdio> #includ

【解题报告】【图论专题】

图论500题http://blog.csdn.net/luomingjun12315/article/details/47438607 [最小生成树+并查集] 1.hdu 1856  基础并查集★ /* 转化为图论模型 求一个图的最大联通分量 用并查集,每个联通分量用一个集合维护,最后求集合元素个数的最大值 */ #include<iostream> #include<cstdio> #include<cstring> using namespace std; cons