Link
解题思路
先Tarjan,把牛进行捆绑
(在一个强连通分块中,如果一个牛是明星,那么其他的牛也一定是明星)
考虑明星的的条件
- 在出度为0的强连通分块中
(如果这个分块喜欢另一个分块的牛,因为是两个分块,所以另一个分块的牛一定不喜欢这个分块的牛,不然互相喜欢,就是一个强连通分块了) - 出度为0的强连通分块只有一个
(如果出现两个出度为0的强连通分块,那这两个分块的牛不喜欢对方,那么就没有牛是明星)
Code
#include <iostream>
#include <cstdio>
using namespace std;
struct DT{
int to, next;
}Ta[500000];
int n, m, dye, ans, Tnum, now, top, x, y, s[10100], times[10100];
int Ts[10100], Thead[10100], low[10100], dfn[10100], hep[10100], co[10100];
void Tar