![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
有向图强联通分量
goto_1600
我何来寂寞,哪有寂寞可言。
展开
-
AcWing 368. 银河
解题报告:这题其实可以差分约束做。但是spfa跑太慢了,我们今天来讲一个线性的做法,tarjan,因为图中没有负点,如果图中存在正环就说明存在和为正数的强联通分量,然后最后问的所有亮度和,可以求出每个连通分量的个数再乘以亮度,亮度可以跑在长路,按照拓扑序的做法。 #include<iostream> #include<cstring> #include<algori...原创 2020-05-05 18:10:45 · 249 阅读 · 0 评论 -
最大半连通子图
解题思路:只要找一个最长的链,因为不需要两个点互相到达,只需要一个点能到另一个点就行了,但是这条链不能分叉,先tarjan,缩点,建新图,然后用递推思想,从ssc_cnt开始递减,按照拓扑序做,g[]数组代表以i点为终点的方案数,f[]数组代表以i为终点集合中点的数量。如果f[k]<f[i]+size[k] g[k]=g[i],更新f[k],如果相等g方案数相加就行了。 #include&l...原创 2020-05-05 18:06:57 · 498 阅读 · 0 评论 -
学校网络
题目大致意思:给定一个图,问最少激活多少个点可以遍历整个图,至少加几条边可以让每个点都能到达任何点(成为一个大连通分量)。 第一个问题很简单,只要让入度为0的起点都激活,肯定能遍历所有点,第二个答案是max(起点个数,终点个数),类似于这样,记录规律就行了。。 #include<iostream> #include<algorithm> #include<cstd...原创 2020-05-05 18:03:14 · 351 阅读 · 0 评论 -
174. 受欢迎的牛
当一头牛的出度为0他一定是受欢迎的牛。 #include<iostream> #include<cstring> #include<algorithm> using namespace std; const int N=10010,M=50010; int h[N],ne[M],e[M],idx; int s[N],dfn[N],low[N],timesta...原创 2020-05-05 17:57:10 · 267 阅读 · 0 评论