//// Created by 刘宇韬 on 2022年3月13日.////// Created by 刘宇韬 on 2022年3月13日.//#include "bits/stdc++.h"using namespace std;typedef long long LL;const int N = 1505 ,M = N,INF = 0x3f3f3f3f;int n,m;int h[N],e[M],ne[M],w[M],idx;bool st[N];int dp[N][2];int root;void add(int a,int b){e[idx] = b,ne[idx] = h[a],h[a] = idx++;}void dfs(int u){//如果选当前根节点,就加上这个点的权值dp[u][1] = 1;dp[u][0] = 0;for(int i = h[u]; i !=-1; i = ne[i]) {int j = e[i];dfs(j);//如果选当前边,他的子节点可选可不选,从中挑一个权值大的dp[u][1] += min(dp[j][1],dp[j][0]);//如果不选当前边,就一定不选他的子节点dp[u][0] += dp[j][1];}}int main(){while (scanf("%d",&n)!=-1){memset(h,-1,sizeof h),idx = 0;memset(st, 0, sizeof st);root = 0;for(int i = 0; i <n; i++) {int id,cnt;scanf("%d:(%d)",&id,&cnt);while (cnt--){int x;cin>>x;add(id,x);st[x] = true;}}while (st[root])root++;dfs(root);cout<<min(dp[root][0],dp[root][1])<<endl;}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。