#include<cstdio>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<stdlib.h>
#include<math.h>
#include<vector>
#include<iomanip>
using namespace std;
int dp[1550][2];
vector<int> f[1550];
int p[1550];
void dfs(int v)
{
if(f[v].size()==0)
{
dp[v][0]=0;
dp[v][1]=1;
}
else
{
int i;
for(i=0;i<f[v].size();i++)
{
int u=f[v][i];
dfs(u);
dp[v][0]+=dp[u][1];
dp[v][1]+=min(dp[u][0],dp[u][1]);
}
dp[v][1]++;
}
}
int main()
{
int i,j;
int n;
while(scanf("%d",&n)!=EOF)
{
int nn=n;
memset(p,0,sizeof(p));
memset(dp,0,sizeof(dp));
for(i=0;i<=n;i++)
f[i].clear();
while(n--)
{
int t1,m;
scanf("%d:(%d)",&t1,&m);
while(m--)
{
int t2;
cin>>t2;
f[t1].push_back(t2);
p[t2]=1;
}
}
int k;
for(i=0;i<nn;i++)
if(p[i]==0)
{
k=i;
break;
}
dfs(k);
printf("%d\n",min(dp[k][0],dp[k][1]));
}
//system("pause");
}
hdu-1054-Strategic Game
最新推荐文章于 2021-08-09 20:00:44 发布