제출 #815349

#제출 시각아이디문제언어결과실행 시간메모리
815349Liudas친구 (IOI14_friend)C++17
46 / 100
30 ms6132 KiB
#include <bits/stdc++.h> #include "friend.h" #define __MAXSIZE__ 100002 using namespace std; void getmax(int head, int N, vector<vector<int>> &arr, int &m, set<int> been, int score, int conf[]){ if(head == N){ m = max(m, score); return; } set<int> nbeen = been; for(int i : arr[head]){ nbeen.insert(i); } getmax(head + 1, N, arr, m, been, score, conf); if(been.find(head) == been.end()) getmax(head + 1, N, arr, m, nbeen, score + conf[head], conf); } void dfs(int head, int par, vector<vector<int>> &arr, vector<int> &val, vector<int> &bel){ int v = 0; for(int i : arr[head]){ if(i != par){ dfs(i, head, arr, val, bel); v += max(bel[i], val[i]); bel[head] += val[i]; } } val[head] = v; } int findSample(int n,int confidence[],int host[],int protocol[]){ int N = n; if(n <= 10){ vector<vector<int>> arr(N); for(int i = 1; i < N; i ++){ int h = host[i]; if(protocol[i] == 0){ arr[i].push_back(h); arr[h].push_back(i); } if(protocol[i] == 1){ for(int j : arr[h]){ arr[i].push_back(j); arr[j].push_back(i); } } if(protocol[i] == 2){ arr[i].push_back(h); arr[h].push_back(i); for(int j : arr[h]){ arr[i].push_back(j); arr[j].push_back(i); } } } int m = 0; set<int> brr; getmax(0, N, arr, m, brr, 0, confidence); return m; } else{ if(count(protocol, protocol + n, 1) == n-1){ return accumulate(confidence, confidence + n, 0ll); } if(count(protocol, protocol + n, 2) == n-1){ return *max_element(confidence, confidence + n); } vector<vector<int>> arr(N); for(int i = 1; i < N; i ++){ int h = host[i]; if(protocol[i] == 0){ arr[i].push_back(h); arr[h].push_back(i); } } vector<int> val(N), bel(N); for(int i = 0; i < N; i ++){ bel[i] = confidence[i]; } dfs(0, -1, arr, val, bel); return val[0]; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...