#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 510;
int h[N], e[N], ne[N], idx, d[N],state[N];
int q[N], hh = 0, tt = -1;
int n;
void add(int a, int b) {
e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}
void topsort() {
for (int i = 1;i<N;i++) {
if (state[i]&&d[i] == 0) q[++tt] = i;
}
while (hh <= tt) {
int a = q[hh++];
for (int i = h[a];i != 0;i = ne[i]) {
int b = e[i];
d[b]--;
if (d[b] == 0&&state[b]==1) q[++tt] = b;
}
}
if (tt == n - 1) cout << "YES ";
else cout << n-1-tt;
}
int main() {
cin >> n;
for (int i = 1;i <= n;i++) {
int x, m;
cin >> x >> m;
state[x] = 1;
while (m--) {
int a;
cin >> a;
add(x, a);
d[a]++;
}
}
topsort();
}
第4个测试点re