이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
// Subtask 1
#include <bits/stdc++.h>
using namespace std;
int findSample(int n, int confidence[], int host[], int protocol[]) {
bool subtask2 = 1, subtask3 = 1, subtask4 = 1;
for (int i=1; i<n; i++) {
if (protocol[i] != 1) subtask2 = 0;
if (protocol[i] != 2) subtask3 = 0;
if (protocol[i] != 0) subtask4 = 0;
}
if (subtask2) {
int ans=0;
for (int i=0; i<n; i++) ans += confidence[i];
return ans;
}
if (subtask3) {
int ans=0;
for (int i=0; i<n; i++) ans = max(ans, confidence[i]);
return ans;
}
if (subtask4) {
}
vector<int> adjlist[n];
for (int i=1; i<n; i++) {
if (protocol[i] != 1) {
adjlist[host[i]].push_back(i);
adjlist[i].push_back(host[i]);
}
if (protocol[i] != 0) {
for (auto &nx : adjlist[host[i]]) {
adjlist[i].push_back(nx);
adjlist[nx].push_back(i);
}
}
}
int ans=0;
for (int i=0; i<(1<<n); i++) {
bool vis[n]; memset(vis, 0, sizeof(vis));
bool flag=1;
int res=0;
for (int j=0; j<n&&flag; j++) {
int bit = (i>>j)&1;
if (bit == 0) continue;
res += confidence[j];
for (auto &nx : adjlist[j]) if (vis[nx]) flag = 0;
vis[j] = 1;
}
if (flag) ans = max(ans, res);
}
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... |