답안 #819850

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
819850 2023-08-10T14:17:00 Z Cyber_Wolf 친구 (IOI14_friend) C++17
27 / 100
54 ms 65536 KB
#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 -