cuiyulin @ 2021-11-30 18:27:16
#include<bits/stdc++.h>
using namespace std;
int n,mp[1550],f[1550][2],mmp[1550],mmn;
vector<int> a[1550];
void dfs(int k)
{
f[k][1]+=1;
for(int i=0;i<a[k].size();i++)
{
dfs(a[k][i]);
f[k][1]+=min(f[a[k][i]][0],f[a[k][i]][1]);
f[k][0]+=f[a[k][i]][1];
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
{
int k,m;
cin>>k>>m;
for(int j=1;j<=m;j++)
{
int x;
cin>>x;
a[k].push_back(x);
mp[x]=1;
}
}
for(int i=0;i<n;i++)
if(mp[i]==0)
mmn=i;
dfs(mmn);
cout<<max(f[mmn][0],f[mmn][1]);
return 0;
}
by LHLeisus @ 2021-12-08 18:49:05
这太简单了,详细讲解