# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
697464 | Deepesson | 친구 (IOI14_friend) | C++17 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define MAX 1005
std::vector<int> con[MAX];
// Find out best sample
int findSample(int n,int confidence[],int host[],int protocol[]){
for(int i=1;i!=n;++i){
if(protocol[i]==0){
int alfa = host[i];
con[alfa].push_back(i);
con[i].push_back(alfa);
}else {
for(auto&x:con[host[alfa]]){
con[i].push_back(x);
con[x].push_back(i);
}
}
}
bool foi[n]={};
int cor[n]={};
int ans=0;
for(int i=0;i!=n;++i){
if(foi[i])continue;
std::queue<int> queue;
queue.push(i);
foi[i]=true;
int alfa=0,beta=0;
while(queue.size()){
auto __ = queue.front();
queue.pop();
for(auto&x:con[__]){
if(foi[x])continue;
if(!cor[__])++alfa;else ++beta;
cor[x]=!cor[__];
queue.push(x);
foi[x]=true;
}
}
ans+=std::max(alfa,beta);
}
return ans;
}