⼩y同學是⼀位資料結構⼤師同時也是⼀位園藝⼤師。
秋天到了,⼩y同學需要對學校內的⼀棵樹展現他頂尖的修葉⽔平。
學校內的這棵樹是⼀顆擁有n個點的⽆根樹,每次⼩y會刪去所有的葉⼦節點(即度數小於等於1的節點),直到所有的點都被刪除了為⽌。
⼩y現在想問你對於每個點,求出它是第⼏次操作中被刪除的。
第⼀⾏⼀個數字n,表⽰樹上節點個數
接下來n−1⾏,每⾏兩個數字u,v,表⽰樹上的⼀條邊。
⼀⾏n個數字,第i個數字表⽰節點i在第⼏次操作中被刪除。
樣例輸入1:
5
1 21 3
2 42 5
樣例輸出1:2 2 1 1 1
樣例輸入2:4
1 21 3
1 4
樣例輸出2:2 1 1 1
對於30%的資料,n≤1000
對於100%的資料,2≤n≤100000,1≤u,v≤n
首先看到題目,所給樹是一棵無根樹,一棵沒有特定的根節點的樹,稱為無根樹。
所以任意選取圖中某個點為根,均可將無根樹轉化成為有根樹,即在輸入時要雙向加邊。
因為每次是要將葉子節點刪去,那麼當入度為1時(假設此邊所連點為根節點,此節點就是葉子節點),就應該刪掉。
題目要求刪除的順序,所以就定義乙個結構體,儲存入度和刪除的次序,通過以上推論可得刪掉的節點的次序就應該是它倒數第二條邊所連線的節點的次序加一。
用拓撲序變形就可解決。
分析至此,不難寫出**.
#include #include #include #include #include using namespace std;
const int maxn = 100005;
int n;
vectorg[maxn];
struct node a[maxn];
queueq;
void topsort()
} while (q.size())
}// printf ("\n"); }}
int main()
// for (int i = 1; i <= n; i++)
topsort();
for (int i = 1; i <= n; i++)
return 0;
}
第五周迭代計畫
設計超必殺技 招式定義 所謂超必殺技,通俗來說就是人物在發這一招的瞬間通常伴隨著畫面震動或者畫面變黑 聲音增大等等特效。招式效果 通常伴隨人物自身體力的大量減少來給對手造成較大傷害。超必殺技在寫法上與普通招式的區別 需要新增在state狀態器裡將hitdef的狀態更改為ha 詞典所記錄的超必殺 新增...
第五周總結,第六周計畫
第五周 在生活上 每天晚上都會進行運動會表演方隊訓練,每天都是腰痠背痛的回寢室。在星期四時,我們在學生會主席的帶領下,去了隔壁學校 西南醫科大學 進行單招考試的踩點。星期五時,我們迎來了2019屆單招考生,第一次感受時間過的真快,轉眼我們就從來大學時的懵懂轉變成了一群學弟學妹的學長。大學真的過的太快...
第五周周總結
時間進度表 日期開始時間 結束時間 中斷時間 淨時活動 備註3月15日 7 10 9 10 120打程式 規範 進行初步構思 3月16日 7 10 9 10 120打程式 實現減法無負數 3月17日 8 00 10 00 120打程式 實現減法無負數 3月18日 4 10 5 50 5 00 5 1...