tarjan,然后入度为 \(0\) 的点个数记一下就行了。
枚举一个点,然后最长路找另一个。
如果没环,那么答案就是每个连通块的最长路。
如果有环,那么答案就是每个环的长度的 gcd。
倒着做,然后考虑左边是能力值,右边是社团,从小到大进行匹配即可。
高维前缀和,维护最大值和次大值。