제출 #741755

#제출 시각아이디문제언어결과실행 시간메모리
741755vjudge1Friend (IOI14_friend)C++17
19 / 100
1 ms468 KiB
#include <bits/stdc++.h>
#include <friend.h>
using namespace std;

// subtask 4
int dp(int x, int t, bool used, vector<int> adj[], int confidence[], int memo[][2])
{
    if (memo[x][used]!=-1)
        return memo[x][used];
    int sum=used*confidence[x];
    for (auto y : adj[x])
    {
        if (y==t)
            continue;
        if (used)
            sum=sum+dp(y, x, false, adj, confidence, memo);
        else
            sum=sum+max(dp(y, x, true, adj, confidence, memo), dp(y, x, false, adj, confidence, memo));
    }

    return memo[x][used]=sum;
}

int findSample(int n, int confidence[], int host[], int protocol[])
{
    vector<int> adj[n];
    for (int i=1; i<n; i++)
    {
        adj[host[i]].push_back(i);
        adj[i].push_back(host[i]);
    }
    int memo[n][2];
    for (int i=0; i<n; i++)
    {
        memo[i][0]=-1;
        memo[i][1]=-1;
    }

    return max(dp(0, -1, true, adj, confidence, memo), dp(0, -1, false, adj, confidence, memo));
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...