代码:
#include<bits/stdc++.h>
using namespace std;
const int MAXN=105;
int n;
int x,m,y,t,ans;
int in[MAXN];
vector<int> s[MAXN];
queue<int>q;
int main(){
scanf("%d",&n);
ans=n;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&x,&m);
while(m--)
{
scanf("%d",&y);
s[i].push_back(y);
in[y]++;
}
}
for(int i=1;i<=n;i++)
if(in[i]==0)
q.push(i),ans--;
while(!q.empty())
{
t=q.front();
q.pop();
for(int i=0;i<s[t].size();i++)
{
x=s[t][i];
in[x]--;
if(in[x]==0)
{
q.push(x);
if(x<=n) ans--;
}
}
}
if(ans==0)
printf("YES\n");
else printf("%d\n",ans);
return 0;
}
不知道为啥会mle,请各位大佬帮忙条条QWQ
orz