zoukankan      html  css  js  c++  java
  • luoguP2016 战略游戏

     luoguP2016 战略游戏

    题目描述

    给定一棵树,一个点覆盖与之连接的边,求最少要用多少点可以覆盖这棵树。

    solution

    典型的树形DP,我就只能做这种没有什么技术含量的水题了QwQ

    显然对于一个点可以选或不选

    如果这个点不选,则他的儿子必须选

    如果这个点选了,就随便了QwQ

    #include<bits/stdc++.h>
    
    using namespace std;
    
    #define MAXN 2000
    
    inline int read()
    {
        int f=1,x=0;
        char ch;
        do
        {
            ch=getchar();
            if(ch=='-') f=-1;
        }while(ch<'0'||ch>'9');
        do
        {
            x=(x<<3)+(x<<1)+ch-'0';
            ch=getchar();
        }while(ch>='0'&&ch<='9');
        return f*x;
    }
    
    int n,ans=1<<30;
    int f[MAXN][2];
    vector<int>son[MAXN];
    
    inline void dp(int x,int fa)
    {
        f[x][0]=0;
        f[x][1]=1;
        for(int i=0;i<son[x].size();i++)
        {
            int v=son[x][i];
            if(v!=fa)
            {
                dp(v,x);
                f[x][0]+=f[v][1];
                f[x][1]+=min(f[v][0],f[v][1]);
            }
        }
    }
    
    int main()
    {
        n=read();
        for(int i=1;i<=n;i++)
        {
            int u=read(),k=read();
            for(int i=1;i<=k;i++)
            {
                int v=read();
                son[v].push_back(u);
                son[u].push_back(v);
            } 
        }
        for(int i=0;i<n;i++)
            dp(i,-1),ans=min(ans,min(f[i][0],f[i][1]));
        printf("%d
    ",ans);
    }
  • 相关阅读:
    关于勉励
    jQuery MiniUI
    DES 加密解密
    软件设计的原则
    关于jFinal
    医疗保险,公积金、养老、生育、工伤、失业保险
    GET和POST的区别(详解)
    单例模式
    ajax 同步和异步的区别
    tomcat部署web项目的3中方法
  • 原文地址:https://www.cnblogs.com/wlzs1432/p/9350082.html
Copyright © 2011-2022 走看看