E68 树形DP P2016 战略游戏

视频链接:E68 树形DP P2016 战略游戏_哔哩哔哩_bilibili

 

 

E17 树形DP P1352 没有上司的舞会 - 董晓 - 博客园 (cnblogs.com) 

P2016 战略游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

// 树形DP O(n)
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

const int N=1505;
int idx,head[N],to[N<<1],ne[N<<1];
void add(int u,int v){
  to[++idx]=v;ne[idx]=head[u];head[u]=idx;
}
int n,m,f[N][2]; //0不放士兵 1放士兵

void dfs(int u,int fa){
  f[u][1]=1;
  for(int i=head[u];i;i=ne[i]){
    int v=to[i];
    if(v==fa) continue;
    dfs(v,u);
    f[u][0]+=f[v][1];
    f[u][1]+=min(f[v][0],f[v][1]);
  }
}
int main(){
  scanf("%d",&n);
  for(int i=1,a,b,k;i<=n;i++){
    scanf("%d%d",&a,&k); a++;
    for(int j=1;j<=k;j++){
      scanf("%d",&b); b++;
      add(a,b);add(b,a);
    }
  } 
  dfs(1,0);
  printf("%d",min(f[1][0],f[1][1]));
}

 

posted @ 2024-10-15 18:39  董晓  阅读(51)  评论(0编辑  收藏  举报