代码如下:
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int n,rudu[505],cnt;
const int N=505;
vector <int> g[N];
queue <int> q;
void tuopu(){
for(int i=1;i<=n;i++){
if(!rudu[i]){
q.push(i);
cnt++;
}
}
while(!q.empty()){
int u=q.front();
q.pop();
for(int i=1;i<=g[u].size();i++){
int v=g[u][i];
rudu[v]--;
if(rudu[v]==0){
q.push(v);
cnt++;
}
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
int x,y,m;
cin>>x>>m;
for(int j=1;j<=m;j++){
cin>>y;
g[x].push_back(y);
rudu[y]++;
}
}
tuopu();
int ans=n-cnt;
if(ans){
cout<<ans;
}
else{
cout<<"YES";
}
return 0;
}