結果
問題 |
No.3237 Find the Treasure!
|
ユーザー |
|
提出日時 | 2025-08-10 15:13:26 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
(最新)
J_ERR
(最初)
|
実行時間 | - |
コード長 | 1,122 bytes |
コンパイル時間 | 421 ms |
コンパイル使用メモリ | 82,668 KB |
実行使用メモリ | 97,204 KB |
平均クエリ数 | 14.04 |
最終ジャッジ日時 | 2025-08-10 15:28:55 |
合計ジャッジ時間 | 10,831 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | WA * 22 |
ソースコード
N=int(input()) tree=[[] for i in range(N)] edge=[] for i in range(N-1): u,v=map(int,input().split()) edge.append((u,v)) tree[u-1].append(v-1) tree[v-1].append(u-1) dist=[-1]*N vert=[0] dist[0]=0 while vert: pos=vert.pop() for i in tree[pos]: if dist[i]==-1: dist[i]=dist[pos]+1 vert.append(i) x=[0]*(N-1) for i in range(N-1): if dist[edge[i][0]-1]%2==0: x[i]=edge[i][0] else: x[i]=edge[i][1] print("?",*x) res=input() cand=[] if res=="Yes": for i in range(N): if dist[i]%2==0: cand.append(i) else: for i in range(N): if dist[i]%2==1: cand.append(i) while len(cand)>1: mid=len(cand)//2 memo=[0]*N for i in range(mid): memo[cand[i]]=1 for i in range(mid,len(cand)): memo[cand[i]]=-1 for i in range(N-1): if memo[edge[i][0]-1]==1 or memo[edge[i][1]-1]==-1: x[i]=edge[i][0] else: edge[i][0] print("?",*x) res=input() if res=="Yes": cand=cand[:mid] else: cand=cand[mid:] print("!",cand[0]+1)