#include "friend.h"
#include<bits/stdc++.h>
using namespace std;
int n;
int a[100005];
int parent[100005];
vector<int> con[100005];
int adevarat[100005];
int dp[100005][2];
void dfs(int nod)
{
dp[nod][1] = a[nod];
dp[nod][0] = 0;
for(int adj:con[nod])
{
dfs(adj);
dp[nod][1] += dp[adj][0];
dp[nod][0] += max(dp[adj][1], dp[adj][0]);
}
}
int findSample(int cit_n, int confidence[], int host[], int protocol[])
{
n = cit_n;
for(int i=0;i<n;i++)
{
a[i] = confidence[i];
parent[i] = -1;
}
for(int i=1;i<n;i++)
{
if(protocol[i]==0)
{
parent[i] = adevarat[host[i]];
con[parent[i]].push_back(i);
adevarat[i] = i;
a[parent[i]] = max(a[parent[i]], a[i]);
}
else if(protocol[i]==1)
{
adevarat[i] = host[i];
a[adevarat[i]] += a[i];
}
else
{
}
}
int sum=0;
for(int i=0;i<n;i++)
{
if(adevarat[i]==i && parent[i]==-1)
{
dfs(i);
sum += max(dp[i][0], dp[i][1]);
}
}
return sum;
}
# | 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... |