#include <bits/stdc++.h>
#include "friend.h"
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#pragma GCC optimize("Ofast")
using namespace std;
using namespace __gnu_pbds;
#define lg long long
#define ordered_set tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
const int N = 1e3+5;
vector<set<int>> adj(N);
int cost[N], dp[N][2], par[N], ans[N];
int get(int n)
{
if(par[n] == n) return n;
return par[n] = get(par[n]);
}
void join(int u, int v)
{
par[get(u)] = get(v);
return;
}
int dfs(int src, int par = -1, int x = 0)
{
auto&ret = dp[src][x];
if(~ret) return ret;
int ans = (!x)*cost[src];
for(auto it : adj[src])
{
if(it == par) continue;
int ch = dfs(it, src, x^1);
if(x)
{
ch = max(ch, dfs(it, src, x));
}
ans += ch;
}
return ret = ans;
}
int findSample(int n, int c[], int h[], int p[])
{
cost[0] = c[0];
for(int i = 0; i < n; i++) par[i] = i;
for(int i = 1; i < n; i++)
{
p[i]++;
cost[i] = c[i];
if(p[i]&2)
{
for(auto it : adj[h[i]])
{
adj[i].insert(it);
adj[it].insert(i);
join(i, it);
}
}
if(p[i]&1)
{
adj[i].insert(h[i]);
adj[h[i]].insert(i);
join(i, h[i]);
}
}
for(int i = 0; i < n; i++)
{
memset(dp, -1, sizeof(dp));
ans[get(i)] = max(ans[get(i)], dfs(i));
}
int fin = 0;
for(int i = 0; i < n; i++)
{
if(i == get(i)) fin += ans[i];
}
return fin;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
0 ms |
360 KB |
Output is correct |
4 |
Correct |
0 ms |
340 KB |
Output is correct |
5 |
Correct |
0 ms |
340 KB |
Output is correct |
6 |
Correct |
0 ms |
340 KB |
Output is correct |
7 |
Runtime error |
32 ms |
65536 KB |
Execution killed with signal 9 |
8 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Correct |
1 ms |
340 KB |
Output is correct |
6 |
Correct |
1 ms |
340 KB |
Output is correct |
7 |
Correct |
1 ms |
360 KB |
Output is correct |
8 |
Correct |
1 ms |
468 KB |
Output is correct |
9 |
Correct |
1 ms |
340 KB |
Output is correct |
10 |
Correct |
1 ms |
340 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
54 ms |
65536 KB |
Execution killed with signal 9 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
352 KB |
Output is correct |
2 |
Correct |
0 ms |
340 KB |
Output is correct |
3 |
Correct |
0 ms |
356 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Correct |
25 ms |
596 KB |
Output is correct |
6 |
Correct |
28 ms |
372 KB |
Output is correct |
7 |
Correct |
1 ms |
340 KB |
Output is correct |
8 |
Correct |
26 ms |
364 KB |
Output is correct |
9 |
Correct |
1 ms |
340 KB |
Output is correct |
10 |
Correct |
4 ms |
340 KB |
Output is correct |
11 |
Correct |
5 ms |
340 KB |
Output is correct |
12 |
Correct |
28 ms |
488 KB |
Output is correct |
13 |
Correct |
22 ms |
468 KB |
Output is correct |
14 |
Correct |
1 ms |
340 KB |
Output is correct |
15 |
Correct |
23 ms |
468 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
360 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Correct |
0 ms |
340 KB |
Output is correct |
6 |
Correct |
0 ms |
340 KB |
Output is correct |
7 |
Correct |
1 ms |
340 KB |
Output is correct |
8 |
Runtime error |
33 ms |
65536 KB |
Execution killed with signal 9 |
9 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
356 KB |
Output is correct |
3 |
Runtime error |
33 ms |
65536 KB |
Execution killed with signal 9 |
4 |
Halted |
0 ms |
0 KB |
- |