1 条题解

  • 0
    @ 2023-9-13 10:30:05

    image

    #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
    上传者