進階班例題
祖先的探訪
時間限制 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
「跑範例測資」只跑題目敘述上的範例,會顯示你的輸出與正確答案的對照; 「提交評測」會跑完整的測資並給實際結果,但不會顯示測資內容。兩者都不需要帳號,也不會留下成績紀錄。