随笔分类 - { 图论 { 连通性 { 强连通分量 } } }
摘要:题目大概说有n个可以获益的项目,还有m个有一定代价的技术问题。解决某个项目需要先解决某些技术问题;而解决某些技术问题又需要解决另外一些技术问题;如果两个技术问题互相依赖,则要同时解决它们。问能获得的最少收益是多少。
阅读全文
摘要:题目大概就是说给一张二分图以及它的一个完备匹配,现在问X部的各个点可以与Y部那些些点匹配,使得X部其余点都能找到完备匹配。 枚举然后匹配,当然不行,会超时。 这题的解法是,在二分图基础上建一个有向图:原二分图中边(x,y)连<x,y>的弧,对于那个已知的匹配中的所有边(x,y)连<y,x>的弧,然后
阅读全文
摘要:题目给一张有向图G,要在其传递闭包T(G)上删除若干点,使得留下来的所有点具有单连通性,问最多能留下几个点。 其实这道题在T(G)上的连通性等同于在G上的连通性,所以考虑G就行了。 那么问题就简单了,强连通分量缩点,强连通分量必定要一起留下,从入度0到出度0的强连通分量找到一条包含最多点的通路即可。
阅读全文
摘要:题目给一张有向图,要把点分组,问最少要几个组使得同组内的任意两点不连通。 首先考虑找出强连通分量缩点后形成DAG,强连通分量内的点肯定各自一组,两个强连通分量的拓扑序能确定的也得各自一组。 能在同一组的就是两个强连通分量在不同的从入度0到出度0的强连通分量的路径上。 那么算法很直观就能想到了,用记忆
阅读全文
摘要:题目大概是,每个人收到信息后会把信息发给他认识的一个人如此下去,问一开始要把信息发送给谁这样看到信息的人数最多。 首先找出图中的SCC并记录每个SCC里面的点数,如果传到一个SCC,那么里面的人都可以看到信息。 然后SCC缩点后就形成DAG,直接记忆化搜索,d(u)搜索从u点出发开始传最多能传多少人
阅读全文
摘要:题目是问,一个有向图有多少个点v满足∀w∈V:(v→w)⇒(w→v)。 把图的强连通分量缩点,那么答案显然就是所有出度为0的点。 用Tarjan找强连通分量: 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using n
阅读全文
摘要:题目问一个有向图所有点都能达到的点有几个。 先把图的强连通分量缩点,形成一个DAG,那么DAG“尾巴”(出度0的点)所表示的强连通分量就是解,因为前面的部分都能到达尾巴,但如果有多个尾巴那解就是0了,因为尾巴间达到不了。判断是否有多个尾巴,可以从最后一个强连通分量中的某一个点出发看能否在逆图上遍历完
阅读全文
摘要:这道题要判断一张有向图是否是单连通图,即图中是否任意两点u和v都存在u到v或v到u的路径。 方法是,找出图中所有强连通分量,强连通分量上的点肯定也是满足单连通性的,然后对强连通分量进行缩点,缩点后就变成DAG。 现在问题就变成,如何判断DAG是否是单连通图——用拓扑排序——如果拓扑排序过程中出现1个
阅读全文