Submission #780254

#TimeUsernameProblemLanguageResultExecution timeMemory
780254Sohsoh84Friend (IOI14_friend)C++17
8 / 100
1 ms852 KiB
#include "friend.h"
#include <bits/stdc++.h>

using namespace std;

#define debug(x)		cerr << #x << ": " << x << endl;

const int MAXN = 1e4 + 10;

int dp[MAXN], C[MAXN], col[MAXN], ans[2], n;
vector<int> adj[MAXN];

inline void add(int u, int v) {
	adj[u].push_back(v);
	adj[v].push_back(u);
}

void dfs(int v) {
	ans[col[v] - 1] += C[v];
	for (int u : adj[v]) {
		if (!col[u]) {
			col[u] = 3 - col[u];
			dfs(u);
		}	
	}
}

int findSample(int n, int C_[], int host[], int protocol[]){
	for (int i = 0; i < n; i++)
		C[i] = C_[i];

	for (int i = 1; i < n; i++) {
		if (protocol[i] % 2 == 0) add(host[i], i);
		if (protocol[i] > 0) {
			for (int u : adj[host[i]])
				add(i, u);
		}
	}

	int fans = 0;
	for (int i = 0; i < n; i++) {
		if (!col[i]) {
			ans[0] = ans[1] = 0;
			col[i] = 1;
			dfs(i);
			fans += max(ans[0], ans[1]);
		}
	}

	return fans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...