이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "friend.h"
#include<bits/stdc++.h>
using namespace std;
int findSample(int n, int confidence[], int host[], int protocol[]){
vector<int>edges[n];
for (int i = 1; i < n; i++){
if (protocol[i] == 0){
//iam your friend
edges[i].push_back(host[i]);
edges[host[i]].push_back(i);
}else{
for (int& x : edges[host[i]]){
edges[i].push_back(x);
edges[x].push_back(i);
}
}
}
//bipirtite max match is congruent to Min Vertex cover
//because of konig's theorem
//max independent set is opposite of min vertex cover
vector<bool>used(n, false);
vector<int>to(n, -1);
int res = n;
function<int(int)>dfs = [&](int u){
if (used[u])return 0;
used[u] = 1;
for (int& x : edges[u]){
if (to[x] == -1 || dfs(to[x])){
to[x] = u;
return 1;
}
}
return 0;
};
for (int i = 0; i < n; i++){
used.assign(n, false);
res -= dfs(i);
}
return res;
}
# | 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... |