#dwacon2018prelimse. [dwacon2018_prelims_e]ニワンゴくんの家探し

[dwacon2018_prelims_e]ニワンゴくんの家探し

問題文

これはインタラクティブな問題です。

dwango社員のニワンゴくんは NN 頂点の木に住んでいます。 この木の頂点には 11 から NN までの番号がついています。 この木の ii 番目の辺は頂点 aia_i と頂点 bib_i を双方向につなぐ長さ 11 の辺です。 ニワンゴくんは どの頂点の次数も 55 以下である ことを知っています。

この木のいずれかの頂点にニワンゴくんの家がありますが、ニワンゴくんは家がどこにあるかを忘れてしまいました。

ニワンゴくんは自作のプログラムに最大で QQ 回質問を行って、家のある頂点を特定したいです。 プログラムに 22 つの頂点の番号 u,vu,v を渡すと、家のある頂点から近い方の頂点の番号が表示されます。 ただし、どちらの頂点も家のある頂点から同じ距離にある場合は 0 が表示されます。

制約

  • 2leqNleq2,0002 \\leq N \\leq 2{,}000
  • Q=14Q = 14
  • 1leqai,bileqN1 \\leq a_i,b_i \\leq N
  • 与えられるグラフは木
  • どの頂点の次数も 55 以下

部分点

  • どの頂点の次数も 22 以下であるようなデータセットに正解した場合、400400 点が与えられる。

入出力

最初に、標準入力から以下の形式で入力が与えられる:

NN QQ a1a_1 b1b_1 :: aN1a_{N-1} bN1b_{N-1}

その後、以下の形式で質問を出力せよ:

? uu vv

ここで、u,vu,v11 以上 NN 以下の整数でなくてはならない。 次に、質問の答えが標準入力から以下の形式で与えられる:

ansans

ここで、ansansu,v,0u,v,0 のいずれかである。 それぞれの値は以下のことを表す。

  • uuuuvv のうち、家のある頂点に近いのは uu である
  • vvuuvv のうち、家のある頂点に近いのは vv である
  • 00uuvv は、家のある頂点から同じ距離にある

最後に、答えを以下の形式で出力せよ:

! xx

ここで xx は家のある頂点でなくてはならない。


ジャッジ

  • **出力のあと、標準出力を flush せよ。**従わない場合 TLE の可能性がある。
  • 答えを出力した後、プログラムをすぐに終了せよ。従わない場合のジャッジの挙動は定義されていない。
  • 出力の答えが間違っている場合の挙動は定義されていない( WA とは限らない)。

入出力例

これは以下のような木において、頂点 33 にニワンゴくんの家がある場合の入出力例です。

9a1e6749a8c427dfca8d1bb6d28204c8.png

Input

Output

6 14
1 2
5 2
3 1
3 6
1 4

? 4 5

4

? 1 6

0

? 6 5

6

! 3

  • 頂点 4,54,5 のうち、頂点 33 に近いのは頂点 44 なので 44 が表示されます。
  • 頂点 1,61,6 は頂点 33 から同じ距離にあるため、00 が表示されます。
  • 頂点 6,56,5 のうち、頂点 33 に近いのは頂点 66 なので 66 が表示されます。
  • 家がある頂点が 33 だと回答しました。1414 回以下の質問で正しい答えを出力したため、正解となります。