3-20WA 求助 代码:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <iomanip>
#include <cstring>
#include <string>
#include <cmath>
#include <map>
#include <cstdint>
using namespace std;
struct node
{
int w;
int to;
node(int to_,int w_)
{
w=w_;
to=to_;
}
};
vector<node> tree[1000010];
int n;
int cd[1000010];
int ans=0;
void add(int x,int y,int w)
{
tree[x].push_back({y,w});
tree[y].push_back({x,w});
}
void dfs(const int& np,const int& fp)
{
++cd[np];
for(int i=0;i<tree[np].size();++i)
{
if(tree[np][i].to!=fp)
{
dfs(tree[np][i].to,np);
cd[np]+=cd[tree[np][i].to];
ans+=tree[np][i].w*abs(2*cd[tree[np][i].to]-n);
}
}
}
int main()
{
scanf("%d",&n);
int x,y,z;
for(int i=1;i<n;++i)
{
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
}
/*
for(int i=1;i<=n;++i)
{
cout<<i<<":";
for(int j=0;j<tree[i].size();++j)
{
cout<<tree[i][j].to<<",";
}
cout<<endl;
}
cout<<endl;*/
dfs(1,-1);
/*
for(int i=1;i<=n;++i)
{
cout<<cd[i]<<' ';
}
cout<<endl;*/
cout<<ans<<endl;
return 0;
}
感谢!