제출 #1288821

#제출 시각아이디문제언어결과실행 시간메모리
1288821Faisal_Saqib친구 (IOI14_friend)C++17
11 / 100
15 ms1704 KiB
#include "friend.h"
#include <bits/stdc++.h>
using namespace std;
const int N=100;
set<int> ma[N];
bool edg[N][N];
int findSample(int n,int as[],int host[],int p[]){
	int ans=0;
	for(int i=1;i<n;i++)
	{
		int pa=host[i];
		if(p[i]==0 or p[i]==2)
		{
			ma[pa].insert(i);
			edg[pa][i]=1;
			edg[i][pa]=1;
			ma[i].insert(pa);
		}
		if(p[i]==1 or p[i]==2)
		{
			for(auto x:ma[pa])
			{
				ma[x].insert(i);
				ma[i].insert(x);
				edg[x][i]=edg[i][x]=1;
			}
		}
	}
	for(int m=0;m<(1<<n);m++)
	{
		vector<int> cur;
		for(int i=0;i<n;i++)
		{
			if((m>>i)&1)
			{
				cur.push_back(i);
			}
		}
		int sz=cur.size();
		int sm=0;
		bool fal=0;
		for(int i=0;i<sz;i++)
		{
			sm+=as[cur[i]];
			for(int j=0;j<i;j++)
			{
				if(edg[cur[i]][cur[j]])
				{
					fal=1;
				}
			}
		}
		if(!fal)
		{
			ans=max(ans,sm);
		}
	}
	return ans;
}
#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...