QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#115630#4926. Where Is the Root?jamielim0 1ms3684kbC++141.4kb2023-06-26 14:01:472023-06-26 14:01:51

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-06-26 14:01:51]
  • 评测
  • 测评结果:0
  • 用时:1ms
  • 内存:3684kb
  • [2023-06-26 14:01:47]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;

#define pb emplace_back
#define mp make_pair
#define fi first
#define se second
#define SZ(x) (int)x.size()
#define ALL(x) x.begin(),x.end()
typedef pair<int,int> ii;
typedef long long ll;
typedef unsigned long long ull;
const int INF=1012345678;
const ll LLINF=1012345678012345678LL;
const ll MOD=1000000007;

int n;
vector<int> adj[505];
vector<int> leaf;
bool lf[505];
int memo[505];

bool query(vector<int> v){
	sort(ALL(v));
	v.resize(unique(ALL(v))-v.begin());
	printf("? %d",SZ(v));
	for(int i:v)printf(" %d",i);
	printf("\n");
	fflush(stdout);
	char str[5];
	scanf("%s",str);
	if(str[0]=='Y')return 1;
	return 0;
}

bool query(int idx){
	if(memo[idx]!=-1)return memo[idx];
	vector<int> v;
	for(int i=0;i<=idx;i++)v.pb(leaf[i]);
	memo[idx]=query(v);
	return memo[idx];
}

int main(){
	scanf("%d",&n);
	int a,b;
	for(int i=1;i<n;i++){
		scanf("%d%d",&a,&b);
		adj[a].pb(b);adj[b].pb(a);
	}
	for(int i=1;i<=n;i++){
		if(SZ(adj[i])==1){
			lf[i]=1;
			leaf.pb(i);
		}
	}
	for(int i=1;i<=n;i++){
		if(!lf[i]){
			leaf.pb(i);
		}
	}
	int l=1,r=SZ(leaf)-1;
	while(l<r){
		int m=(l+r)/2;
		if(query(m)){
			r=m;
		}else{
			l=m+1;
		}
	}
	int ans=-1;
	if(l==1){
		if(query({leaf[0],leaf[2]})){
			ans=leaf[0];
		}else{
			ans=leaf[1];
		}
	}else{
		ans=leaf[l];
	}
	printf("! %d\n",ans);
	fflush(stdout);
}

详细

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 7
Accepted
time: 0ms
memory: 3660kb

input:

7
4 1
1 2
4 3
3 5
3 6
4 7

output:

! 4

result:

ok OK

Test #2:

score: -7
Wrong Answer
time: 1ms
memory: 3656kb

input:

9
5 9
8 6
2 8
1 8
3 6
6 7
1 4
4 5

output:

! 8

result:

wrong output format Unexpected end of file - int32 expected

Subtask #2:

score: 0
Wrong Answer

Test #24:

score: 0
Wrong Answer
time: 1ms
memory: 3672kb

input:

30
1 15
29 30
1 4
7 28
29 17
1 26
26 7
12 5
27 13
3 7
27 1
21 15
9 22
22 5
24 27
19 1
25 30
22 27
6 15
16 13
18 2
27 10
27 30
20 26
8 15
18 8
14 1
27 23
11 3

output:

! 30

result:

wrong output format Unexpected end of file - int32 expected

Subtask #3:

score: 0
Wrong Answer

Test #54:

score: 0
Wrong Answer
time: 1ms
memory: 3684kb

input:

500
419 133
44 225
391 269
419 461
293 347
108 31
110 363
423 257
321 155
498 87
180 492
251 5
357 30
341 172
275 109
372 446
286 336
208 339
162 320
138 103
129 219
62 141
359 286
130 238
470 460
418 48
210 358
429 13
323 143
382 415
406 394
309 175
325 170
128 108
6 113
363 17
470 457
7 224
288 48...

output:

! 499

result:

wrong output format Unexpected end of file - int32 expected