天天看點

HDU 5305 Friends (DFS,窮舉+剪枝)

題意:

  給定n個人,m對朋友關系,如果對于每個人,隻能剛好選擇其所有朋友中的一半的人進行聊天(隻是我和我的朋友,不是我的朋友和我的朋友),那麼有多少種情況?隻要一個選擇不同,視為不同情況。

思路:

  比如我在14個朋友中選擇了7個跟我聊天,那麼另外7人已經完全與我沒幹系,而和我聊天的7個朋友,也已經和我聊天了,即我們配對了,共7對,他所選擇的那一半的人中也必須有我。

  其實隻考慮所給的m條邊就行了。如果是奇數對關系,必定有人是奇數個朋友,那麼也就0種情況。如果是偶數條邊,還得判斷每個人是否都是偶數個朋友,若不是也是0種。

  滿足了情況之後再對m個關系選取其中的m/2條即可。但是所選的關系也必須是滿足要求的,那麼對于所選的m/2條關系進行判斷即可知道是否滿足要求,窮舉所有可能進行判斷。dfs就可以了,每條邊要麼選,要麼不選。但是必須剪枝才能過。

HDU 5305 Friends (DFS,窮舉+剪枝)
HDU 5305 Friends (DFS,窮舉+剪枝)

ac代碼

作者:​​xcw0754​​

水準有限,若有疏漏,歡迎指出。

繼續閱讀