全mle求指错
查看原帖
全mle求指错
1113547
joso楼主2024/9/8 21:01

按题解第一篇的思路写的,但提交结果均mle,求指点一下

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=5e5+10;
int a[N];
int dist[N];
struct tr
{
    int v;
    int w;
}tree[N];
vector<tr> e[N];
int ans=0;
void dfs(int u)
{
    for(int i=0;i<e[u].size();i++)
    {
        if(e[u][i].v==u) continue;
        dfs(e[u][i].v);
        dist[u]=max(dist[u],dist[e[u][i].v]+e[u][i].w);
    }
    for(int i=0;i<e[u].size();i++)
    {
        if(e[u][i].v==u) continue;
        ans+=(dist[u]-dist[e[u][i].v]-e[u][i].w);
    }
}
void solve()
{
    int n,k;
    cin>>n>>k;
    for(int i=1;i<=n-1;i++)
    {
        int u,v,w;
        cin>>u>>v>>w;
        e[u].push_back({v,w});
        e[v].push_back({u,w});
    }
    dfs(k);
    cout<<ans<<endl;
}
signed main()
{
    int t=1;
    while(t--)
    {
        solve();
    }
}
2024/9/8 21:01
加载中...