poj-1947-Rebuilding Roads

来源:互联网 发布:仟游软件科技 编辑:程序博客网 时间:2024/06/05 21:01
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<cstdlib>#include<vector>using namespace std;#define inf 0x3f3f3f3fvector<int> f[155];int d[155],dp[155][155];int flag[155];int n,p;void dfs(int v){flag[v]=1;int i,j,k;for(i=0;i<f[v].size();i++){int u=f[v][i];if(flag[u]==0){dfs(u);for(j=p;j>=1;j--){for(k=0;k<=j;k++)dp[v][j]=min(dp[v][j],dp[v][j-k]+dp[u][k]);}}}}int main(){int i,j;cin>>n>>p;memset(d,0,sizeof(d));for(i=1;i<n;i++){int a,b;cin>>a>>b;d[a]++,d[b]++;f[a].push_back(b);f[b].push_back(a);}memset(dp,inf,sizeof(dp));memset(flag,0,sizeof(flag));for(i=1;i<=n;i++){dp[i][1]=d[i];}dfs(1);int mn=100000000;for(i=1;i<=n;i++)mn=min(mn,dp[i][p]);cout<<mn-2*(p-1)<<endl;//system("pause");}

0 0
原创粉丝点击