이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
/// #pragma GCC optimize ("Ofast")
/// #pragma GCC target ("avx2")
/// #pragma GCC optimize("unroll-loops")
using namespace std;
using ll = long long;
using ld = long double;
#define ff first
#define ss second
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define lb lower_bound
const int MOD = 998244353;
int par[1001], res[1001], DP[1001][2];
vector<int> adj[1001];
int findSet(int v) {
if(par[v] == v) return v;
return par[v] = findSet(par[v]);
}
void unionSet(int u, int v) {
u = findSet(u), v = findSet(v);
if(u == v) return;
par[u] = v; res[v] = max(res[v], res[u]);
}
int dfs(int v, int p, int state, int* confidence) {
if(DP[v][state] != -1) return DP[v][state];
int A = 0, B = confidence[v];
for(auto u : adj[v]) {
if(u == p) continue;
A += dfs(u, v, 0, confidence);
B += dfs(u, v, 1, confidence);
}
if(state) B = 0;
return DP[v][state] = max(A, B);
}
int findSample(int N, int* confidence,
int* host, int* protocol) {
bool S1 = 1, S2 = 1, S3 = 1;
for(int l = 1; l < N; l++)
S1 &= (protocol[l] == 0),
S2 &= (protocol[l] == 1),
S3 &= (protocol[l] == 2);
if(S1) {
memset(DP, -1, sizeof DP);
for(int l = 1; l < N - 1; l++)
adj[host[l]].push_back(l),
adj[l].push_back(host[l]);
return dfs(0, 0, 0, confidence);
}
for(int l = 0; l < N; l++)
par[l] = l, res[l] = confidence[l];
for(int l = 1; l < N; l++) {
if(protocol[l] < 2) continue;
unionSet(l, host[l]);
}
int ans = 0;
for(int l = 0; l < N; l++) {
if(par[l] != l) continue;
ans += res[l];
}
return ans;
}
# | 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... |