Login with GitHub. Nope?
修正 C++ 的程式碼在使用一定量動態記憶體後會產生 RF 的問題 @ 2019/12/6 4:45pm NeoHOJ 強勢復活中 (Open beta)
Submit  Ranklist

Problem : 228 - Mobiles

Problem Statistics

Solved Member: 25  Submission: 112  User Tried: 26

Statement:

你需要幫你的弟弟艾克買禮物。艾克對禮物有很特殊的品味,而且他只喜歡能調整成他喜好樣子的禮物。
  
  你發現了一間賣吊飾的禮品店。這裡所謂的吊飾是一種能吊在天花板上的多層裝飾品。一個吊飾由許多橫桿藉由垂直連接線連接而成。每一根橫桿的兩頭都連有線,可掛上另一根橫桿,或是一個玩具。以下以圖示表示一個吊飾。


  
如果想讓艾克接受一個吊飾做為禮物,此吊飾必須能經由調整,從而滿足以下條件:
   (I) 任意兩個玩具必須在同樣的高度,或是高度僅差一。在這裡所謂的高度是指禮物到達天花板所需經過的橫桿數。
   (II) 對任意兩個高度差一的禮物而言,左邊的禮物必須比較低。

  吊飾可經由所謂交換進行調整。互換的具體定義是選定一個橫桿,取下兩端所掛的東西,左右交換之後再掛回原選定的橫桿。此一動作並不會改變我們從選定的橫桿兩端所取下的東西其內部物件(橫桿或玩具)的順序。

  因為你正在接受資訊奧林匹亞集訓,所以你決定寫一個程式來決定一個給定的吊飾是否能經由互換而調整成艾可會喜歡的形式。
  
  考慮上面的吊飾圖例。艾可不會喜歡這個吊飾。雖然它滿足第一個條件,但並不滿足第二個條件–最左邊的玩具比他右邊的玩具來的高。

  雖然如此,這個吊飾還是可以調整成艾可喜歡的形式。我們需要進行以下步驟:
   1. 首先,交換橫桿1 的左右邊。亦即橫桿2 及橫桿3 的位置會被互換,形成以下的狀態。



   2. 接著我們交換橫桿2 的左右邊,亦即將橫桿4 移到橫桿2 的左邊,並將玩具移到橫桿2 的右邊。



  經由這些調整,此吊飾可以滿足艾可喜歡的條件。意即所有的玩具高度最多差一,而且比較低的玩具會在比較高的玩具左邊。

  你的工作是當給定一個吊飾時,找出最小數目的互換動作將吊飾調整成艾可喜歡的樣子(如果可能的話)。我們在此假定玩具在調整過程中不會互相卡住。

Input:Output:

輸入的第一行為一整數n (1 ≤ n ≤ 100 000) ,代表橫桿數。橫桿由1 編號到n。

接下來的n 行每一行代表一個橫桿的連接情形,意即第i 行代表編號為i 的橫桿之連接情形。這裡每一行有兩個整數l 及r,並以一個空白分開。這兩個整數分別代表此橫桿左右兩端所掛的東西。如果此整數為 -1 則代表掛的是玩具,否則代表掛的是編號為此整數的橫桿。

如果編號為i 的橫桿之下掛有其他橫桿,則其編號必大於i。編號為1 的橫桿為最上面的橫桿。
輸出為一行,且此行僅有一整數,代表將此吊飾調整成艾可喜歡樣子所需的最少互換數目。如果此吊飾不可能調整成艾可喜歡的樣子則輸出 -1。

Sample Input:Sample Output:

6
2 3
-1 4
5 6
-1 -1
-1 -1
-1 -1
2

Source:

APIO 2007

Problem Setter

Testdata:

TestTimeMemoryScore
01000ms32767kb
1100ms32767kb2
2100ms32767kb2
3100ms32767kb2
4100ms32767kb2
5100ms32767kb2
6100ms32767kb2
7100ms32767kb2
8100ms32767kb2
9100ms32767kb2
10100ms32767kb2
11100ms32767kb2
12100ms32767kb2
13100ms32767kb2
14100ms32767kb2
15100ms32767kb2
16100ms32767kb2
17100ms32767kb2
18100ms32767kb2
19100ms32767kb2
20100ms32767kb2
21100ms32767kb2
22100ms32767kb2
23500ms32767kb2
24500ms32767kb2
251000ms32767kb2
261000ms32767kb2
271000ms32767kb3
281000ms32767kb3
291000ms32767kb3
301000ms32767kb3
311000ms32767kb3
321000ms32767kb3
331000ms32767kb3
341000ms32767kb3
351000ms32767kb3
361000ms32767kb3
371000ms32767kb3
381000ms32767kb3
391000ms32767kb3
401000ms32767kb3
411000ms32767kb3
421000ms32767kb3