RT。
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=2e5+10;
struct edge{
int v;
int a,b;
};
vector<edge> G[maxn];
int suma[maxn],sumb[maxn];
int depth[maxn],dp[maxn][20];
void dfs(int u,int fa){
depth[u]=depth[fa]+1;
dp[u][0]=fa;
for (int i=1;i<20;i++) dp[u][i]=dp[dp[u][i-1]][i-1];
for (int i=0;i<(int)G[u].size();i++){
int v=G[u][i].v;
if (v==fa) continue;
suma[v]=suma[u]+G[u][i].a;
sumb[v]=sumb[u]+G[u][i].b;
dfs(v,u);
}
}
signed main(){
int T;
scanf("%lld",&T);
int n=0;
while (T--){
for (int i=1;i<=n;i++) G[i].clear();
memset(suma,0,sizeof(suma)); memset(sumb,0,sizeof(sumb));
memset(dp,0,sizeof(dp)); memset(depth,0,sizeof(depth));
scanf("%lld",&n);
for (int j=2;j<=n;j++){
int f,a,b;
scanf("%lld%lld%lld",&f,&a,&b);
G[f].push_back((edge){j,a,b});
}
depth[0]=-1;
dfs(1,0);
for (int j=2;j<=n;j++){
int num=suma[j];
int u=j;
for (int i=19;i>=0;i--){
while (sumb[dp[u][i]]>num) u=dp[u][i];
}
if (sumb[u]>num) u=dp[u][0];
printf("%lld ",depth[u]);
}
printf("\n");
}
return 0;
}
编译信息:
UnexpectedResponse: got an unexpected response when requesting `https://codeforces.com/data/submitSource`: error decoding response body: invalid digit found in string