제출 #874049

#제출 시각아이디문제언어결과실행 시간메모리
874049simuyu친구 (IOI14_friend)C++14
16 / 100
1 ms604 KiB
#include <bits/stdc++.h> #include "friend.h" using namespace std; #define f first #define s second int findSample(int n, int confidence[], int host[], int protocol[]) { int p = protocol[1]; bool st234 = true; for (int idx=2; idx<n; idx++) { if (protocol[idx] != p) { st234=false; break; } } if (st234) { // subtasks 2, 3, 4 if (p==0) { // IAmYourFriend, st4 /* // just get all pairs by host and host index int res = 0; for (int guest=1; guest<n; guest++) { res = max(res, confidence[host[guest]] + confidence[guest] ); } return res; */ // THIS FORMS A TREE!! // prep for bfs to bipartite graph vector<int> adjlist[n]; for (int guest=1; guest<n; guest++) { adjlist[host[guest]].push_back(guest); adjlist[guest].push_back(host[guest]); } int types[n]; for (int i=0; i<n; i++) types[i] = -1; // bfs queue<pair<int, int> > q; q.push(pair<int,int>(0,0)); pair<int,int> data; while (!q.empty()) { data = q.front(); q.pop(); if (types[data.f] != -1) continue; // if go back to parent types[data.f] = data.s; for (int idx=0; idx<(int)adjlist[data.f].size(); idx++) { q.push(pair<int,int>( adjlist[data.f][idx] , 1-data.s ) ); // push neighbours to other colour } } int res0=0, res1=0; for (int i=0; i<n; i++) { if (types[i] == 0) res0 += confidence[i]; else res1 += confidence[i]; } return max(res0, res1); } else if (p==2) { // MyFriendsAreYourFriends, st3 // nobody is freinds lol, just get max int res = 0; for (int person=0; person<n; person++) { res = max(res, confidence[person]); } return res; } else if (p==1) { // WeAreYourFriends, st2 // it's just all of them summed up int res = 0; for (int person=0; person<n; person++) { res += confidence[person]; } return res; } else { // smtg weird return -1; } } else { // do whole graph with all. st1 or st5 (or unsolved st6) return 0; // TODO } }
#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...