Submission #199314

#TimeUsernameProblemLanguageResultExecution timeMemory
199314kshitij_sodaniPaprike (COI18_paprike)C++17
11 / 100
10 ms632 KiB
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
typedef  long long int llo ;
#define mp make_pair
#define pb push_back
#define a first
#define b second
vector<llo> adj[16];
vector<pair<llo,llo>> ed;
vector<llo> adj2[16];
llo it[16];
llo vis[16];
llo ans;
vector<llo> stac;
llo n,k;
llo co;
void dfs(llo no){
	co+=it[no];
	for(llo j=0;j<adj2[no].size();j++){
		llo nn=adj2[no][j];
		if(vis[nn]==0){
			vis[nn]=1;
			dfs(nn);
		}
	}
}
void recurse(llo ind){
	if(ind==n-1){
		llo tot=n-1;
		for(llo i=0;i<stac.size();i++){
			if(stac[i]==1){
				tot-=1;
				adj2[ed[i].a].pb(ed[i].b);
				adj2[ed[i].b].pb(ed[i].a);
			}
		}
		llo st=1;
		memset(vis,0,sizeof(vis));
		for(llo i=0;i<n;i++){
			if(vis[i]==0){
				co=0;
				vis[i]=1;
				dfs(i);
				if(co>k){
					st=0;
				}

			}
		}
		if(st==1){
			ans=min(ans,tot);
		}
		for(llo i=0;i<n;i++){
			adj2[i].clear();
		}
	}	
	else{
		stac.pb(1);
		recurse(ind+1);
		stac.pop_back();
		stac.pb(0);
		recurse(ind+1);
		stac.pop_back();
	}
}
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cin>>n>>k;
	ans=n-1;
	for(llo i=0;i<n;i++){
		cin>>it[i];
	}
	llo aa,bb;

	for(llo i=0;i<n-1;i++){
		cin>>aa>>bb;
		adj[aa-1].pb(bb-1);
		adj[bb-1].pb(aa-1);
		ed.pb(mp(aa-1,bb-1));
	}
	recurse(0);
	cout<<ans<<endl;








	return 0;
}

Compilation message (stderr)

paprike.cpp: In function 'void dfs(llo)':
paprike.cpp:20:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(llo j=0;j<adj2[no].size();j++){
              ~^~~~~~~~~~~~~~~~
paprike.cpp: In function 'void recurse(llo)':
paprike.cpp:31:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(llo i=0;i<stac.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...