#include<bits/stdc++.h>
#include"friend.h"
using namespace std;
using ll=long long;
#define __MAXSIZE__ 100002
const ll N=1e5+7;
ll a[N],hst[N],tp[N],_n;
int findSample(int __n,int confidence[],int host[],int protocol[]){
_n=__n;
for(int i=0;i<_n;++i){
a[1+i]=confidence[i];
if(i)hst[1+i]=host[i]+1;
if(i)tp[1+i]=protocol[i];
}
ll ans=0;
for(int i=_n;i>1;--i){
ll u=i,v=hst[i];
if(tp[i]==1)a[v]+=a[u];
else if(tp[i]==2)a[v]=max(a[v],a[u]);
else{
ans+=a[u];
a[v]=max(0ll,a[v]-a[u]);
}
}
return ans+a[1];
}
/*
// Confidence
int confidence[__MAXSIZE__];
// Host
int host[__MAXSIZE__];
// Protocol
int protocol[__MAXSIZE__];
// Main
int main(void)
{
int n,i;
// Number of people
assert(scanf("%d",&n)==1);
// Confidence
for(i=0;i<n;i++)
assert(scanf("%d",&confidence[i])==1);
// Host and Protocol
for(i=1;i<n;i++)
assert(scanf("%d %d",&host[i],&protocol[i])==2);
// Answer
printf("%d\n",findSample(n,confidence,host,protocol));
return 0;
}
*/
# | 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... |