進階班例題

祖先的探訪

時間限制 1000 ms · 記憶體限制 256 MB · C++

Alice 得到了一棵有 $N$ 個節點的樹,節點編號為 $1$ 到 $N$,節點 $1$ 是樹的根節點。

她想知道:對於每個節點 $x$,從根節點走訪到 $x$ 所會經過的節點有哪些?請你幫助她完成這些查詢。

輸入說明

  • 第一行包含兩個整數 $N$ 和 $Q$,分別代表節點數與查詢數。
  • 接下來 $N - 1$ 行,每行兩個整數 $u, v$,代表節點 $u$ 與節點 $v$ 之間有一條邊。
  • 最後一行包含 $Q$ 個整數,代表每次查詢的節點編號 $x$。

$1 \le N \le 10^5$,$1 \le Q \le 10^5$,輸入保證形成一棵樹,$1 \le x \le N$,所有詢問輸出的節點個數總和不超過 $10^{6}$。

輸出說明

輸出共 $Q$ 行,每行為一筆查詢的答案,依照從根節點(1)走訪至節點 $x$ 的路徑(含起點與終點),中間節點由小到大排序輸出,以空格隔開。

範例

範例輸入 1

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

範例輸出 1

1 3 5
1
1 6
C++77 / 50,000

「跑範例測資」只跑題目敘述上的範例,會顯示你的輸出與正確答案的對照; 「提交評測」會跑完整的測資並給實際結果,但不會顯示測資內容。兩者都不需要帳號,也不會留下成績紀錄。