#include <bits/stdc++.h> using namespace std ; const int N=1600,M=5*N; int n,in[N],nxt[M],go[M],hd[N],all=1,f[N][2]; void add(int x,int y){ go[++all]=y,nxt[all]=hd[x],hd[x]=all; } void dp(int x,int last){ int i,y; f[x][1]=1; for(i=hd[x];i;i=nxt[i]){ y=go[i]; if(y!=last){ dp(y,x); f[x][0]+=f[y][1]; f[x][1]+=min(f[y][0],f[y][1]); } } } signed main(){ int i,t,x,y; cin>>n; for(i=1;i<=n;i++){ cin>>x>>t; ++x; while(t--) cin>>y,in[++y]++,add(x,y),add(y,x); } for(t=1;in[t];) t++; dp(t,0); cout<<min(f[t][1],f[t][0]); }
标签:游戏,int,P2016,战略,++,add,dp,go,hd From: https://www.cnblogs.com/towboa/p/17138375.html