Submission #421000

#TimeUsernameProblemLanguageResultExecution timeMemory
421000marcipan5000Friend (IOI14_friend)C++14
69 / 100
41 ms4344 KiB
#include "friend.h" #include <bits/stdc++.h> using namespace std; bool q1=1,q2=1,q3=1; int n1; int ans=0; int uu; int conff[1002]; vector<int> t[1002]; bool z[15]; int w=0; void rek(int p) { if (p==n1) { for (int i=0;i<n1;i++) { if (z[i]==1) { for (int j=0;j<t[i].size();j++) { if (z[t[i][j]]==1) { return; } } } } ans=max(ans,w); return; } z[p]=0; rek(p+1); z[p]=1; w+=conff[p]; rek(p+1); z[p]=0; w-=conff[p]; return; } const int maxn = (int)1e3; vector<bool> volt; vector<int> par; bool javit(int akt, bool p){ volt[akt] = true; if(par[akt] != -1 && p) return javit(par[akt], !p); for(int x : t[akt]){ if(!volt[x] && (par[x] == -1 || javit(x, !p))){ par[akt] = x; par[x] = akt; return true; } } return false; } int subtask5(int n){ par.assign(n, -1); int maxmatching = 0; for(int i = 0; i < n; i++){ volt.assign(n, false); if(par[i] == -1 && javit(i, false)) maxmatching++; } return n-maxmatching; } bool vo[1002]; pair<int,int> z2; pair<int,int> dfs(int p) { vo[p]=1; pair<int,int> ans; ans.first=0; ans.second=0; for (int i=0;i<t[p].size();i++) { if (vo[t[p][i]]==0) { z2=dfs(t[p][i]); ans.second+=max(z2.first,z2.second); ans.first+=z2.second; } } ans.first+=conff[p]; return(ans); } int findSample(int n,int confidence[],int host[],int protocol[]) { n1=n; for (int i=1;i<n;i++) { if (protocol[i]!=0) { q1=0; } if (protocol[i]!=1) { q2=0; } if (protocol[i]!=2) { q3=0; } } for (int i=0;i<n;i++) { conff[i]=confidence[i]; } for (int i=1;i<n;i++) { if (protocol[i]==0) { t[i].push_back(host[i]); t[host[i]].push_back(i); } if (protocol[i]==1) { uu=t[host[i]].size(); for (int j=0;j<uu;j++) { t[i].push_back(t[host[i]][j]); t[t[host[i]][j]].push_back(i); } } if (protocol[i]==2) { uu=t[host[i]].size(); for (int j=0;j<uu;j++) { t[i].push_back(t[host[i]][j]); t[t[host[i]][j]].push_back(i); } t[i].push_back(host[i]); t[host[i]].push_back(i); } } if (q3==1) { int ma=0; for (int i=0;i<n;i++) { ma=max(ma,confidence[i]); } return(ma); } if (q2==1) { int ma=0; for (int i=0;i<n;i++) { ma=ma+confidence[i]; } return(ma); } if (q1==1) { z2=dfs(0); return(max(z2.first,z2.second)); } if (n<=10) { /* for (int i2=0;i2<=i;i2++) { for (int j=0;j<t[i2].size();j++) { cout << t[i2][j] << " "; } cout << endl; } cout << endl; */ rek(0); return(ans); } return(subtask5(n)); }

Compilation message (stderr)

friend.cpp: In function 'void rek(int)':
friend.cpp:21:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   21 |                 for (int j=0;j<t[i].size();j++) {
      |                              ~^~~~~~~~~~~~
friend.cpp: In function 'std::pair<int, int> dfs(int)':
friend.cpp:75:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   75 |     for (int i=0;i<t[p].size();i++) {
      |                  ~^~~~~~~~~~~~
#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...