#include <bits/stdc++.h>
#include <queue>
#include <vector>
#include <friend.h>
using namespace std;
vector<int> child[100001];
int cod[6];
int ho[6];
int pro[6];
int dpp[100001][2];
int conn[100001];
int dp(int node, bool inc)
{
int temp;
if(inc)
temp = 1;
else
temp = 0;
if(dpp[node][temp] != -1)
return dpp[node][temp];
if(inc == true)
{
int total = conn[node];
for(int x = child[node].size()-1;x>=0;x-=2)
{
int nn = child[node].at(x-1);
int proc = child[node].at(x);
if(proc == 1)
total += max(dp(nn,true),dp(nn,false));
else
total += dp(nn,false);
}
dpp[node][temp] = total;
}
else
{
int current = 0;
int include2 = 0;
int include1 = 0;
for(int x = child[node].size()-1;x>=0;x-=2)
{
int nn = child[node].at(x-1);
int proc = child[node].at(x);
if(proc == 0)
{
int diff = dp(nn,true) - dp(nn,false);
if(diff <= 0)
current += dp(nn,false);
else
{
if(include1 + diff > include2)
{
current += include1 + dp(nn,true);
current -= include2;
include1 = 0;
include2 = 0;
}
else
{
include1 += diff;
current += dp(nn,false);
}
}
}
else
{
int diff = dp(nn,true) - dp(nn,false);
if(diff < 0)
current += dp(nn,false);
else
{
current += dp(nn,true);
include2 += diff;
}
}
}
dpp[node][temp] = current;
}
return dpp[node][temp];
}
int findSample(int n, int confidence[], int host[], int protocol[])
{
for(int x = 1;x<n;x++)
{
child[host[x]].push_back(x);
child[host[x]].push_back(protocol[x]);
}
for(int x = 0;x<100001;x++)
{
dpp[x][0] = -1;
dpp[x][1] = -1;
}
for(int x = 0;x<n;x++)
{
conn[x] = confidence[x];
}
return max(dp(0,false),dp(0,true));
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
3584 KB |
Output is correct |
2 |
Correct |
5 ms |
3456 KB |
Output is correct |
3 |
Correct |
7 ms |
3456 KB |
Output is correct |
4 |
Correct |
4 ms |
3456 KB |
Output is correct |
5 |
Correct |
5 ms |
3456 KB |
Output is correct |
6 |
Correct |
5 ms |
3524 KB |
Output is correct |
7 |
Incorrect |
5 ms |
3456 KB |
Output isn't correct |
8 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
3456 KB |
Output is correct |
2 |
Correct |
5 ms |
3456 KB |
Output is correct |
3 |
Correct |
5 ms |
3456 KB |
Output is correct |
4 |
Correct |
5 ms |
3584 KB |
Output is correct |
5 |
Correct |
5 ms |
3584 KB |
Output is correct |
6 |
Correct |
5 ms |
3456 KB |
Output is correct |
7 |
Correct |
5 ms |
3456 KB |
Output is correct |
8 |
Correct |
5 ms |
3456 KB |
Output is correct |
9 |
Correct |
5 ms |
3584 KB |
Output is correct |
10 |
Correct |
5 ms |
3456 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
5 ms |
3456 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
3456 KB |
Output is correct |
2 |
Correct |
5 ms |
3456 KB |
Output is correct |
3 |
Correct |
5 ms |
3456 KB |
Output is correct |
4 |
Correct |
5 ms |
3456 KB |
Output is correct |
5 |
Correct |
6 ms |
3584 KB |
Output is correct |
6 |
Correct |
5 ms |
3456 KB |
Output is correct |
7 |
Correct |
4 ms |
3456 KB |
Output is correct |
8 |
Correct |
4 ms |
3584 KB |
Output is correct |
9 |
Correct |
5 ms |
3456 KB |
Output is correct |
10 |
Correct |
5 ms |
3456 KB |
Output is correct |
11 |
Correct |
5 ms |
3456 KB |
Output is correct |
12 |
Correct |
5 ms |
3456 KB |
Output is correct |
13 |
Correct |
5 ms |
3584 KB |
Output is correct |
14 |
Correct |
5 ms |
3456 KB |
Output is correct |
15 |
Correct |
5 ms |
3584 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
3456 KB |
Output is correct |
2 |
Correct |
5 ms |
3456 KB |
Output is correct |
3 |
Correct |
4 ms |
3456 KB |
Output is correct |
4 |
Correct |
4 ms |
3456 KB |
Output is correct |
5 |
Correct |
4 ms |
3456 KB |
Output is correct |
6 |
Correct |
4 ms |
3456 KB |
Output is correct |
7 |
Correct |
5 ms |
3456 KB |
Output is correct |
8 |
Correct |
4 ms |
3456 KB |
Output is correct |
9 |
Correct |
5 ms |
3584 KB |
Output is correct |
10 |
Correct |
5 ms |
3584 KB |
Output is correct |
11 |
Incorrect |
5 ms |
3456 KB |
Output isn't correct |
12 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
3456 KB |
Output is correct |
2 |
Correct |
5 ms |
3456 KB |
Output is correct |
3 |
Correct |
4 ms |
3456 KB |
Output is correct |
4 |
Correct |
4 ms |
3536 KB |
Output is correct |
5 |
Correct |
5 ms |
3456 KB |
Output is correct |
6 |
Correct |
4 ms |
3456 KB |
Output is correct |
7 |
Correct |
5 ms |
3456 KB |
Output is correct |
8 |
Correct |
5 ms |
3456 KB |
Output is correct |
9 |
Correct |
4 ms |
3584 KB |
Output is correct |
10 |
Correct |
4 ms |
3456 KB |
Output is correct |
11 |
Incorrect |
5 ms |
3456 KB |
Output isn't correct |
12 |
Halted |
0 ms |
0 KB |
- |