# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
253354 | 2020-07-27T18:48:54 Z | eohomegrownapps | 친구 (IOI14_friend) | C++14 | 0 ms | 0 KB |
#include "friend.h" #include <bits/stdc++.h> using namespace std; // Find out best sample int subtask1(int n,int confidence[],int host[],int protocol[]){ vector<vector<int>> adjlist(n); for (int i = 1; i<n; i++){ if (protocol[i]==0){ adjlist[host[i]].push_back(i); adjlist[i].push_back(host[i]); } else if (protocol[i]==1){ for (int x : adjlist[host[i]]){ adjlist[i].push_back(x); adjlist[x].push_back(i); } } else { for (int x : adjlist[host[i]]){ adjlist[i].push_back(x); adjlist[x].push_back(i); }; adjlist[host[i]].push_back(i); adjlist[i].push_back(host[i]); } } ll mx = 0; for (int i = 0; i<(1<<n); i++){ //check if ok bool works = true; ll tot = 0; for (int j = 0; j<n; j++){ if ((1<<j)&i){ mx+=confidence[j]; for (int k : adjlist[j]){ if ((1<<k)&i){ works=false; break; } } } if (works==false){ break; } } if (works==false){ continue; } } return mx; } int findSample(int n,int confidence[],int host[],int protocol[]){ if (n<=10){ return subtask1(n,confidence,host,protocol); } return 0; }