这是我的代码
#include<bits/stdc++.h>
using namespace std;
int n,m,u,v,ind[100005],out[100005],ans;
queue<int> q;
vector<int> p[100005];
int main(){
cin>>n;//输入
for(int i=1;i<=n;i++){
cin>>u
;
cin>>m;
for(int j=1;j<=m;j++){
cin>>v;
ind[v]++;
out[u]++;
p[u].push_back(v);
}
}
for(int i=1;i<=n;i++){
if(ind[i]==0){
q.push(i);
}
}
while(!q.empty()){
int now=q.front();
q.pop();
for(int i=0;i<p[now].size();i++)
{
int pos=p[now][i];
ind[pos]--;
if(ind[pos]==0&&out[pos]>0)
q.push(pos);
}
}
for(int i=1;i<=n;i++){
if(ind[i]<=0) ans++;
}
if(ans==n) cout<<"YES";
else cout<<n-ans;
}
写了1个小时~~我太笨了~~