一些有趣的算法/圖論問題

1.選課問題:

  • 在某個大學中,同學A要選課,不過,這些課有一些依賴關係。如:要學習區塊鏈基礎 課,需要先學習 算法基礎--DAG問題 。(僅僅是舉例)同學A一共有10^7門課要選擇,請愛好編程的你編寫一個程序,使得可以在一秒內輸出一種選課的順序。如果不能選課(比如:學習課程A需要先學習B 學習B需要先學習A),輸出:Impossible
  • 思路:輸入課程之間的關係後,進行拓撲排序即可。

2.三角戀問題:

  • 給定一些人,人與人之間有一些關係。比如:A喜歡B B喜歡C。在本問題中,只有一種關係(假設爲--喜歡)。在本問題中,如果A喜歡B B喜歡C,那麼C被喜歡的程度視爲2。給定一些關係,試求被喜歡的程度最高的人。如果有一些人被喜歡的程度相同,按字典序輸出這些人(格式:"A B C"),如果存在三角戀關係,如:A->B->C->A,輸出:"Impossible".
  • 思路:首先,建圖。建圖完畢後,進行一次拓撲排序,並設立一個vis數組,用於存儲是否訪問過本結點。在拓撲排序中,順便判斷vis是否爲1,如果爲1則輸出Impossible。在Possible的時候,將合法的點存到一個priority_queue中,並建立一個具有權值的Node。在程序運行完畢後,輸出priority_queue的內容即可。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章