强连通的模版题,Kosaraju,Tarjan,Garbow三种随便选一种就可以了,三种算法的复杂度都是一样的O(n+m),题意是有N头牛M种关系,牛之间会产生仰慕感,而且会传递,比如说A仰慕B,B仰慕C,那么A仰慕C,问有几头牛是被所有的牛仰慕的
这里我们可以看到一般如果 A->B,B->C,C->A,形成环的话也就是强连通形成时,这三个牛任何一个仰慕其它牛,也就代表着三头都仰慕其它的,一头被其它的仰慕,那么三头都会被其它牛仰慕,所以可以采用 缩点 的方法,意思就是这三个牛其实相当于一头牛
先运用强连通算法,将其中所有的分量染色。,染色的过程中也可以同时计算出分量中点的个数,然后进行缩点和重新构图的过程,将分量编号并且将几何中的元素的边转移到分量上来,即构建一个分量之间的有向图,构建的同时可以统计出每个分量的出度,最后一个统计出出度为0的分量的个数,然后具体输出个数
#include
#include
#include
#include
#include
#include
#include
#include
#include