Submission #835345

#TimeUsernameProblemLanguageResultExecution timeMemory
835345LiudasFriend (IOI14_friend)C++17
46 / 100
24 ms6144 KiB
#include <cstdio> #include <cassert> #define __MAXSIZE__ 100002 #include "friend.h" #include <vector> #include <set> #include <algorithm> #include <numeric> #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; } struct node{ set<int> child; }; 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); } if(count(protocol, protocol + n, 0) == n - 1){ 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]; } } }

Compilation message (stderr)

friend.cpp: In function 'int findSample(int, int*, int*, int*)':
friend.cpp:92:1: warning: control reaches end of non-void function [-Wreturn-type]
   92 | }
      | ^
#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...