哪位万能的大佬救助一下这个蒟蒻,我快调疯了
#include <bits/stdc++.h>
using namespace std;
int n,s,dp[500001],ans=0;
struct edge{
int t,v;
}x1,y2;
vector<edge> v[500001];
void dfs(int u,int fa){
int maxn=-1;
for(int i=0;i!=v[u].size();++i){
int x=v[u][i].t,w=v[u][i].v;
maxn=max(maxn,w);
dfs(x,u);
}
for(int i=0;i!=v[u].size();++i){
int w=v[u][i].v;
ans+=maxn-w;
}
}
int main(){
scanf("%d%d",&n,&s);
for(int i=1;i<=n;++i){
int x,y,w;
scanf("%d%d%d",&x,&y,&w);
x1.t=y,x1.v=w,y2.v=w,y2.t=x;
vector[x].push_back(x1);
vector[y].push_back(y2);
}
dfs(s,0);
printf("%d",ans);
}