cryime
Q&A
Warm-Up
n 个点的有标号无向图,每个点的度数均为偶数的有多少个?
proof:就是n-1个点的图的个数,其他点考虑奇偶性和最后一个点连边,根据握手定理,最后一个点的度数也是偶数。
欧拉回路
相信大家都会
Easy
消失的迷宫
doge的家中有一个硕大的迷宫。
N个点的有向图,这是一个会逐渐消失的迷宫,当你经过一条路的时候,这条路,便会消失。迷宫的出口在N号节点,你将从1号节点出发。
doge也会把这个点变成出口。现在要你走出这个迷宫,如果有多组方案,输出一组即可。
Easy
消失的迷宫
一句话题意:走一条路,一条边只能走一次,使得在无路可走的时候,要么是没有停在n点,要么是没有遍历所有的边。
纯图论题一般都需要分情况讨论讨论。
问题的关键在于是否是一张半欧拉图。
1.如果不是半欧拉图,随便dfs一条路即可。
2.如果是欧拉图,走这条欧拉回路即可。
3.如果是半欧拉图,
如果起点不是1,还是瞎dfs即可。
如果起点是1,终点不是n,那么按照这条欧拉路走即可,
如果终点是n,考虑把连向终点的边断开,判断是否有环,如果有环,把环删去,然后走回路,否则无解。
Medium
图的色数
众所周知,图的色数问题是NP-complete的。但是不妨碍我们对于染色的爱好。我们定义一个图的k染色是说,对这个图的每一个节点标上一个1~k的标号,满足相邻两个点的标号不同。我们定义有向图的二色数,而色数是说对这张图进行k染色时,满足每一个对颜色都至少对应在一条边上。不妨你可以认为这个问题还是NP-complete的。
noname随口一说,我会一个环,于是随手画了一个12个点的环给pulumi看,N=12时候的环的二色数不就是5麽。现在要你求出大小N(<=1000)的环的二色数。
Medium
图的色数
事实证明,最后一个问题不是NPC的,二色数这个说法是我定义的,不知道求任意图的二色数是不是NPC的。不过这些问题都是N-prime21-Complete的。
本题的做法是一个精妙的构造。
先思考这个问题的对偶问题。如果已知二色数为k。我们至少需要多少个点呢?考虑我们如果不浪费任何一条,那么我们大可这样,对于每一个颜色向一半的颜色连边,另一半的颜色向它连边。对于颜色 k我们需要的边(点)数是
所以我们肯定可以确定这个图最多的染色数k。
1. ,考虑这个图他本来就是欧拉图。我们把欧拉回路跑出来就行。
2. ,我们考虑无论如何补一条边,你都把原来那个唯一的边给炸掉了。所以只好k-1。其余奇怪直接补新的点就好。
哈密顿回路
这是在搞笑
接到消息,你们媒体自身也要判断。
图的中心
来点noip向的东西冷静冷静
大家小学可能就会了。
Easy
想二分?会错。我好像错了几次。
严格卡掉二分!要求输出分数解。
Easy
边的中心
我们设这条边的长度为L,两个顶点为u,v。假如我们已经算出u,v为源点的SSSP,存在两个vector,disu,disv里面。设中心距离u为x那么,每一个点到中心的距离为min(disu[p]+x,disv[p]+L-x)。
以x为变量的话将是一条折线。考虑再对不同的点取个max就是取所有折线的并的最上方那条线的最小值。
所以正确姿势是按照disu给所有东西排个序,然后不断合并。
至于图的中心,并没有好的做法,枚举每条边求求中心就好。
Tarjan
大老师Tarjan是当之无愧的学术帝,基本上我们现有的轮子都有他的影子,除了动静态仙人掌?
Q:Tarjan算法不是不是各位大爷爷们noip出的题么。你怎么还在讲啊。
Prime21:QwQ
Tarjan
ZJOI2007最大半连通子图
一个有向图 G=(V, E) 称为半连通的(Semi-Connected),如果满足图中任意两点 u v,存在一条从 u 到 v 的路径或者从 v 到 u 的路径
给一个有向图(n 个点,m 条边),求出她的最大半连通子图中所包含的点数,以及这样的最大半连通子图有多少个(要求模上一个给定的数 x)
Tarjan
ZJOI2007最大半连通子图
这题其实也差不多的做法,先缩点,重新建图,使其成为一个 DAG,DAG 中每个点有一个点权表示这个点是原图中的几个点缩成的
新图中的一个最大半连通子图,必然是新图中的一个最长链(点权和最大),知道了这点之后,DP 就行了,类似于树形 DP,先求出从每个点出发,能走的最长链是多长,统计最长的那条就是最大半连通子图的点的数量了,至于怎么求有多少个最大半连通子图,也是一样的 DP 就行,在上一步的 DP 之后,再 DP 一遍,统计每个点出发能走出多少条最长链,最后统计求和即可
Tarjan
预告
本来有一道脑洞打开的题目,现已卖给noname