1 条题解

  • 1
    @ 2023-8-3 14:12:02

    image

    #include<bits/stdc++.h>
    using namespace std;
    const int N=105;
    int n,m,k,s,t,f[N][N],a[N],sz[N];
    vector<pair<int,int>> e[N];
    void dfs(int u,int fa){
    	sz[u]=1;
    	for (auto &i:e[u]){
    		int v=i.first;
    		int w=i.second;
    		if (v==fa) continue;
    		dfs(v,u);
    		for (int i=sz[u]-1;i>=0;--i)
    			for (int j=0;j<sz[v];++j)
    				f[u][i+j+1]=max(f[u][i+j+1],f[u][i]+f[v][j]+w);
    		sz[u]+=sz[v];
    	}
    }
    int main(){
    	cin>>n>>m;
    	for (int i=1;i<n;++i){
    		cin>>s>>t>>k;
    		e[s].push_back({t,k});
    		e[t].push_back({s,k});
    	}
    	dfs(1,0);
    	cout<<f[1][m];
    }
    
    • 1

    信息

    ID
    369
    时间
    1000ms
    内存
    125MiB
    难度
    1
    标签
    递交数
    29
    已通过
    26
    上传者