# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
798332 | 2023-07-30T15:36:49 Z | Khizri | Friend (IOI14_friend) | C++17 | 0 ms | 0 KB |
#include "friend.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define F first #define S second #define INF 1e18 #define all(v) (v).begin(),(v).end() #define rall(v) (v).rbegin(),(v).rend() #define pii pair<int,int> #define pll pair<ll,ll> #define OK cout<<"Ok"<<endl; #define MOD (ll)(1e9+7) const int mxn=1005; int n,arr[mxn],rel[mxn][mxn]; vector<int>vt[mxn]; int findSample(int N,int confidence[],int host[],int protocol[]){ n=N; for(int i=0;i<n;i++){ arr[i+1]=confidence[i]; } bool task2=ok; for(int i=1;i<n;i++){ int node=host[i]+1; int type=protocol[i]; if(type!=1) task2=false; if(type==0){ vt[node].pb(i+1); vt[i+1].pb(node); } else if(type==1){ int sz=vt[node].size(); for(int j=0;j<sz;j++){ int v=vt[node][j]; vt[v].pb(i+1); vt[i+1].pb(v); } } else{ int sz=vt[node].size(); for(int j=0;j<sz;j++){ int v=vt[node][j]; vt[v].pb(i+1); vt[i+1].pb(v); } vt[node].pb(i+1); vt[i+1].pb(node); } } if(task2){ int mx=0; for(int i=1;i<=n;i++){ mx=max(mx,arr[i]); } return mx; } for(int i=1;i<=n;i++){ for(int v:vt[i]){ rel[i][v]=1; } } int ans=0; for(int mask=1;mask<(1<<n);mask++){ vector<int>v; int sum=0; for(int i=0;i<n;i++){ if(mask&(1<<i)){ v.pb(i+1); sum+=arr[i+1]; } } bool ok=true; for(int i=0;i<v.size();i++){ for(int j=i+1;j<v.size();j++){ if(rel[v[i]][v[j]]){ ok=false; } } } if(ok) ans=max(ans,sum); } return ans; } // g++ friend.cpp grader.cpp ; .\a.exe /* 6 13 3 6 20 10 15 0 0 0 1 1 2 2 1 0 0 */