P5765 [CQOI2005] 珠宝 题解
双倍经验。
\large{\text{Solution}}
根据 P7393 的 结论,我们可以构造出 符合题意且最大点权为
发现当
设
\large{\text{Code}}
#include <bits/stdc++.h>
using namespace std;
int n;
vector<int> g[10010];
int f[10010][10];
void dp(int u,int fa){
for(int i=1;i<=9;i++) f[u][i]=i;
for(auto v:g[u]){
if(v==fa) continue;
dp(v,u);
for(int i=1;i<=9;i++){
int minn=1e9;
for(int j=1;j<=9;j++){
if(i==j) continue;
minn=min(minn,f[v][j]);
}
f[u][i]+=minn;
}
}
return ;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<n;i++){
int aa,bb;
cin>>aa>>bb;
g[aa].push_back(bb);
g[bb].push_back(aa);
}
dp(1,0);
int ans=1e9;
for(int i=1;i<=9;i++) ans=min(ans,f[1][i]);
cout<<ans;
return 0;
}
似乎很多人都觉得最大点权的上界是