你相信謠言嗎?
在一項著名的心理學實驗中,研究人員向人們展示兩條線,並要求他們指出哪一條更長。事實上,除了其中一人之外,其餘的人都是實驗者事先安排好的。這些被安排的人實際上會說較短的線比較長。當周圍所有人都給出相同的答案時,真正的受試者也會說較短的線比較長。這個實驗顯示人們深受周圍人的影響,謠言也是如此。
謠言始於最初的散佈者。最初的散佈者可以有多人,除了最初的散佈者之外,沒有人會憑空創造並相信謠言。
每過一分鐘,相信謠言的人會同時將謠言傳播給所有周圍的人,而群眾中的人只要有超過一半的周圍人相信謠言,他自己也會開始相信謠言。
由於從相信謠言的那一刻起就不會再聽取其他說法,因此一旦相信了謠言,就會持續相信下去。
現在,讓我們找出人們開始相信謠言的時間。
輸入格式
第一行給出人數 $N$。($1 \le N \le 200\,000$) 這代表有編號從 1 到 $N$ 的人。
從第二行開始給出 $N$ 行。其中第 $i$ ($1 \le i \le N$) 行給出 $i$ 號人的周圍人編號,並以代表輸入結束的 $0$ 結尾,各數字以空格分隔。編號為 $1$ 到 $N$ 之間的自然數,同一行中不會有重複的編號。不存在自己是自己的周圍人或單方面成為周圍人的情況,且總體的雙向周圍關係不超過 $1\,000\,000$ 個。
下一行給出散佈謠言的最初散佈者人數 $M$。($1 \le M \le N$)
最後一行給出最初散佈者的編號,以空格分隔。最初散佈者的編號不會重複。
輸出格式
輸出 $N$ 個整數 $t_1, t_2, \dots, t_N$,以空格分隔。$t_i$ 是 $i$ 號人開始相信謠言的時間(分鐘),如果經過足夠長的時間後仍不相信謠言,則輸出 $-1$。最初的散佈者被視為從 $0$ 分鐘開始相信謠言。
範例
輸入 1
7 2 3 0 1 3 0 1 2 4 0 3 5 0 4 0 0 0 2 1 6
輸出 1
0 1 2 3 4 0 -1
輸入 2
7 2 4 0 1 3 0 2 5 0 1 5 6 0 3 4 6 7 0 4 5 7 0 5 6 0 1 6
輸出 2
4 4 3 3 2 0 1
說明
範例 1:
0 分:最初散佈者(1 號和 6 號)產生謠言。
1 分:1 號向 2 號和 3 號散佈謠言。2 號因為周圍 2 人中有 1 人相信謠言,所以開始相信。3 號因為周圍 3 人中只有 1 人相信謠言,所以不相信。6 號沒有可以散佈謠言的周圍人。
2 分:1 號和 2 號向 3 號散佈謠言。因為相鄰的 3 人中有超過一半(2 人)相信謠言,所以 3 號也從 2 分開始相信。
3 分:3 號向 4 號散佈謠言。4 號開始相信。
4 分:5 號也開始相信謠言。7 號在經過足夠長的時間後仍不相信謠言。
Figure 1. 範例 1 的謠言傳播過程示意圖