求助
查看原帖
求助
372087
cuiyulin楼主2021/11/30 18:27
#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;
} 
2021/11/30 18:27
加载中...