社区讨论
求调70pts
P2986[USACO10MAR] Great Cow Gathering G参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mliwj45z
- 此快照首次捕获于
- 2026/02/12 11:31 上周
- 此快照最后确认于
- 2026/02/14 17:35 5 天前
CPP
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll dp[100010];
int cnt[100010];
ll n,sumcow;
struct road{
int t,l;
};
vector<road> to[100010];
void dfs1(int u,int fa){
for(auto v:to[u])
if(v.t!=fa)
{
dfs1(v.t,u);cnt[u]+=cnt[v.t];
dp[u] = dp[u] + dp[v.t] + v.l*cnt[v.t];
}
}
void dfs2(int u,int fa,int l){
if(u!=1)
dp[u] = dp[fa] + (sumcow-2*cnt[u]) * l;
for(auto v:to[u]){
if(v.t!=fa)
dfs2(v.t,u,v.l);
}
}
//dp[u] = dp[fa] + (n-cnt[u]) * l - cnt[u] * l;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>cnt[i];sumcow += cnt[i];
}
for(int i=1;i<n;i++){
int a,b,l;cin>>a>>b>>l;
to[a].push_back((road){b,l});
to[b].push_back((road){a,l});
}
dfs1(1,0);dfs2(1,0,0);
ll ans = 1e16;
for(int i=1;i<=n;i++){
ans = min(ans,dp[i]);
}
cout<<ans;
return 0;
}
样例过了,只有70分
回复
共 0 条回复,欢迎继续交流。
正在加载回复...