跪求调错
查看原帖
跪求调错
233972
秋水1024楼主2021/7/18 19:45
#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
vector<int>e[152];
int n,p,u,v,f[302][302],ans;
int dfs(int u){
	int num=0;
	for(int i=0;i<e[u].size();i++){
		int v= e[u][i];
		num+=dfs(v);
		for(int j=num;j>0;j--)
			for(int k=1;k<j;k++)
				f[u][j]=min(f[u][j],f[u][j-k]+f[v][k]-1);
	}
	return num;
} 
int main()
{
	cin>>n>>p;
	for(int i=1;i<n;i++){cin>>u>>v;e[u].push_back(v);}
	for(int i=1;i<=n;i++)f[i][1]=e[i].size();
	memset(f,0x3f3f3f3f,sizeof(f));
	dfs(1);
	ans=f[1][p];
	for(int i=1;i<=n;i++)if(f[i][p]<ans)ans=f[i][p]+1;
	cout<<ans;
	return 0; 
} 
2021/7/18 19:45
加载中...