이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
enum Protocol
{
IAmYourFriend = 0,
MyFriendsAreYourFriends = 1,
WeAreYourFriends = 2
};
int findSample(int _n, int val[], int host[], int protocol[])
{
size_t n = _n;
vector<array<int, 2>> T(n);
for(size_t u = 0; u < n; u++)
T[u][1] = val[u];
for(size_t u = n; u --> 1; )
{
auto v = host[u];
if(protocol[u] == IAmYourFriend)
T[v] = {T[v][0] + max(T[u][0], T[u][1]), T[v][1] + T[u][0]};
else if(protocol[u] == MyFriendsAreYourFriends)
T[v] = {T[u][0] + T[v][0], max({T[u][1] + T[v][1], T[u][1] + T[v][0], T[u][0] + T[v][1]})};
else if(protocol[u] == WeAreYourFriends)
T[v] = {T[u][0] + T[v][0], max({T[u][1] + T[v][0], T[u][0] + T[v][1]})};
}
return max(T[0][0], T[0][1]);
}
# | 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... |