求调,各位大佬,WA10分,问题出在哪里呢
查看原帖
求调,各位大佬,WA10分,问题出在哪里呢
737088
WUYUEZE楼主2025/1/29 21:51
  • [ ] $$**~~
#include<bits/stdc++.h>
using namespace std;
int a,b,x,y,z,o[2010][2010],p[2010];
vector<int> n[2010],m[2010];
void f(int x,int y){
  p[x]=1;
  if(n[x].size()==1 and n[x][0]==y){
    return;
  }
  for(int i=0;i<n[x].size();i++){
    if(n[x][i]==y){
      continue;
    }
    f(n[x][i],x);
    p[x]+=p[n[x][i]];
  }
  for(int i=0;i<n[x].size();i++){
    if(n[x][i]==y){
      continue;
    }
    for(int j=b;j>=0;j--){
      for(int k=1;k<=j and k<=p[n[x][i]];k++){
        o[x][j]=max(o[x][j],o[x][j-k]+o[n[x][i]][k]+(k*(b-k)+(p[n[x][i]]-k)*(a-b-p[n[x][i]]+k))*m[x][i]);
      }
    }
  }
}
int main(){
  cin>>a>>b;
  for(int i=1;i<a;i++){
    cin>>x>>y>>z;
    n[x].push_back(y);
    n[y].push_back(x);
    m[x].push_back(z);
    m[y].push_back(z);
  }
  f(1,0);
  cout<<o[1][b];
  return 0;
}

~~**

2025/1/29 21:51
加载中...