This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#pragma once 
#include <bits/stdc++.h>
using namespace std;
 
const int N = 1e5+6;
 
int dp[N][3]={};
 
int findSample(int n,int confidence[],int host[],int protocol[]) {
    for (int i = 0; i < n; ++i) {
        dp[i][2] += confidence[i];
    }
    for (int i = n - 1; i > 0; --i) {
        int par = host[i];
        if (protocol[i] == 0) {
            dp[par][0] += max({dp[i][0], dp[i][1], dp[i][2]});
            dp[par][1] += max({dp[i][0]});
            dp[par][2] += dp[i][0];
        }
        if (protocol[i] == 1) {
            /*take nothing*/
            dp[par][0] += dp[i][0];
            /*take one of them*/
            dp[par][1] += max({dp[i][0], dp[i][1], dp[i][2]});
            dp[par][2] += max({dp[i][0], dp[i][1], dp[i][2]});
        }
        if (protocol[i] == 2) {
            dp[par][0] += dp[i][0];
            dp[par][1] += max(dp[i][0], dp[i][2]);
            dp[par][2] += max(dp[i][0], dp[i][1]);
        }
    }
    return max({dp[0][0], dp[0][1], dp[0][2]});
}
Compilation message (stderr)
friend.cpp:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |