2010年8月29日 星期日

POI 11th Spies

題外話:

這題是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)



沒有留言:

張貼留言