題外話:
這題是POI XI Stage I當年第二多人寫出來的題目
最多那題沒有放在main上面QQ
當年這題 190/334 個滿分,不過我覺得這題明明沒有簡單到這種程度= =
// 好罩電波一定覺得是秒殺題
噢然後,Example裡面有一個1打成小寫L,我在想怎麼一直RE
翻譯:
BIA僱用了很多間諜,每個間諜都被下令要監視其他另一個間諜。
KB想要選一些間諜去進行絕密任務,而且他希望能委任越多間諜越好。
然而這個任務太重要了,所以他希望每個被委任的間諜都至少被一個沒有參與任務的間諜
監視。(而且目前的跟監關係不能變動。)
輸入第一行含一個數字n <= 1,000,000,表示共有n個間諜,接下來會有n行
第i+1行會有一個數字Ai,表示間諜i的跟監對象是Ai。
輸出包涵一個數字K,表示最多可以委任K個間諜並符合題目要求。
Example:
6
2
3
1
3
6
5
the correct result is:
3
===================================題解========================
保證每個點都只會有一條連出去的邊,所以每個連通塊一定是一些鍊,
然後有可能在末尾出現一個環。
對於那些鍊,有一個很明顯而且好證的貪心法就是:
1. 如果那個點入分枝度為零,不能取
2. 如果進入那個點的所有點中有任何一個沒有被取的,那麼他就可以取
然後再來處理每個環:
1. 如果那個環所有點入分枝度都是1 -> 可以取 環長/2 取高斯個點
2. 如果那個環有些點入分枝度 > 1 且有至少一個進入他的點沒被取 那他也可以取
然後剩下的點依照跟鍊一樣的邏輯取完。
總複雜度 O(V)
沒有留言:
張貼留言