求大佬帮助 实在不知道是哪错了
查看原帖
求大佬帮助 实在不知道是哪错了
995945
watermouthhang楼主2023/7/29 21:53

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;
}

感谢

2023/7/29 21:53
加载中...