diff --git a/src/8/30/P2016.cpp b/src/8/30/P2016.cpp new file mode 100644 index 0000000..2294208 --- /dev/null +++ b/src/8/30/P2016.cpp @@ -0,0 +1,57 @@ +/* + + + +*/ +#include +#include +#include +#include +#include +#include +using ll = int64_t; + +const ll inf = 1e9; +ll n; +std::vector> edg,dp; + +static inline void dfs(ll f,ll u){ + for(ll v:edg[u]){ + if(v==f)continue; + dfs(u,v); + dp[u][1]+=std::min( + dp[v][0], + dp[v][1] + ); + dp[u][0]+=dp[v][1]; + } +} + + +int main(){ + std::iostream::sync_with_stdio(false); + std::cin.tie(nullptr); + + std::cin>>n; + edg.resize(n); + dp.resize(n,std::vector(2,0)); + for(ll i=1;i<=n;++i){ + dp[i-1][1]=1; + ll u,k; + std::cin>>u>>k; + for(ll j=1;j<=k;++j){ + ll v; + std::cin>>v; + edg[u].push_back(v); + edg[v].push_back(u); + } + } + + dfs(0, 0); + // for(ll i=0;i