제출 #67646

#제출 시각아이디문제언어결과실행 시간메모리
67646tatatanEaster Eggs (info1cup17_eastereggs)C++11
100 / 100
48 ms624 KiB
#include <bits/stdc++.h>
#include "grader.h"
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
#define LL long long
#define st first
#define nd second
#define endl '\n'
using namespace std;

vector<int> v[513];
int cnt,used[513],in[513];

void dfs(int x,int y,int en,vector<int> &add) {

	if(cnt==en)
		return;
	add.pb(x);
	in[x]=1;
	if(!used[x]) ++cnt;
	for(int i=0;i<v[x].size();++i)
		if(v[x][i]!=y)
			dfs(v[x][i],x,en,add);	

}

int findEgg (int n, vector < pair < int, int > > br)
{
    
	memset(used,0,sizeof used);
	for(int i=1;i<=n;++i) 
		v[i].clear();
	for(int i=0;i<n-1;++i) {
		v[br[i].st].pb(br[i].nd);
		v[br[i].nd].pb(br[i].st);
	}
	int left=n;
	while(left!=1) {
		vector<int> add;
		cnt=0;
		memset(in,0,sizeof in);
		dfs(1,0,left/2,add);
		/*cout<<left<<endl;
		for(int i=0;i<add.size();++i)
			cout<<add[i]<<" ";
		cout<<endl;*/
		if(query(add)) {
			left=left/2;
			for(int i=1;i<=n;++i)
				if(!in[i]) used[i]=1;
		}
		else {
			for(int i=0;i<add.size();++i)
				used[add[i]]=1;
			left-=left/2;
		}
	}
	for(int i=1;i<=n;++i)
		if(!used[i])
			return i;

}

컴파일 시 표준 에러 (stderr) 메시지

eastereggs.cpp: In function 'void dfs(int, int, int, std::vector<int>&)':
eastereggs.cpp:22:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<v[x].size();++i)
              ~^~~~~~~~~~~~
eastereggs.cpp: In function 'int findEgg(int, std::vector<std::pair<int, int> >)':
eastereggs.cpp:54:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(int i=0;i<add.size();++i)
                ~^~~~~~~~~~~
eastereggs.cpp:63:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...