摘要:
做这题主要是为了学习一下tarjan的强连通分量,因为包括桥,双连通分量,强连通分量很多的求法其实都可以源于tarjan的这种方法,通过一个low,pre数组求出来。题意:给你许多的A->B ,B->C这样的喜欢的关系,A->B ,B->C也意味着A->C,最后问你被全部别的人喜欢的cow有多少个。如果不告诉你用强连通分量,感觉可能会绕的远一些,但是如果知道了这个思路其实是很显然的。首先是跑出每个强连通分量,在这种情况下,原来的图就变成了一棵树,一棵有有向边的树,然后不难发现,如果这棵树存在一个出度为0的点,那么它就很有可能是答案,为什么是可能呢?因为我们不知道是 阅读全文
摘要:
题目的意思很简单,给你一个已经连通的无向图,我们知道,图上不同的边连通分量之间有一定数量的桥,题目要求的就是要你再在这个图上加一条边,使得图的桥数目减到最少。首先要做的就是找出桥,以及每个点所各自代表的连通分量。 找桥的方法就是经典的low[u],pre[v]的判断,这个在大白书上也有比较详尽的介绍。当我们找到桥之后我们当然要把桥边存起来,存的时候就有很多姿势了,因为题目给的点达到200000的级别,所以肯定不能开一个邻接矩阵,所以存的时候要么就开个vector存下所有的桥边,但是遍历索引的时候就会很蛋疼。要么就采用另外一种方法,vector P[i],其中P[i]这个vector里存下了所有 阅读全文