걍 간선만 가지고 이분탐색했는데 틀리네 이거 왜 틀리는지 알려줄 수 있음? 쿼리 횟수 때문인가? 


#include<bits/stdc++.h>

using namespace std;

typedef pair<int,int> pi;

int n,w;

pi edge[1005];

int query(int l,int r){

set<int>st;

for(int i=l; i<=r; i++){

st.insert(edge[i].first);

st.insert(edge[i].second);

}

cout<<"? "<<st.size()<<" ";

for(int x : st) cout<<x<<" ";

cout.flush();

int a; cin>>a;

return a;

}

int main(){

cin>>n;

for(int i=1; i<n; i++) cin>>edge[i].first>>edge[i].second;

int l = 1,r = n-1;

w = query(l,r);

while(l<r){

int m = (l+r)>>1;

if(query(l,m)==w) r = m;

else l = m+1;

}

cout<<"! "<<edge[r].first<<" "<<edge[r].second;

}