1 条题解
-
0
#include <bits/stdc++.h> #define ll long long #define P 998244353 using namespace std; const int N=155; int n,m,k,s,t,ans,p,sz[N],f[N][N],g[N]; vector<int> e[N]; void dfs(int u){ f[u][1]=0;sz[u]=1; for (int &v:e[u]){ dfs(v); memset(g,0x3f,sizeof(g)); for (int i=1;i<=sz[u];++i){ g[i]=min(g[i],f[u][i]+1); for (int j=1;j<=sz[v];++j) g[i+j]=min(g[i+j],f[u][i]+f[v][j]); } sz[u]+=sz[v]; for (int i=1;i<=sz[u];++i) f[u][i]=g[i]; } if (sz[u]>=p) ans=min(ans,f[u][p]+(u==1?0:1)); } int main() { cin>>n>>p; for (int i=1;i<n;++i){ cin>>s>>t; e[s].push_back(t); } ans=0x3f3f3f3f; dfs(1); cout<<ans; }
- 1
信息
- ID
- 494
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 3
- 标签
- 递交数
- 35
- 已通过
- 21
- 上传者