在一個小鎮中,該鎮上的居民間存在一些好友關係,這個小鎮的居民非常喜歡告訴別人他所獲得的消息,只要某人得知一個消息,他就會傳播給他所有的好友。此外,這個小鎮上有兩家超級市場:每日鮮超市及撰大前超市,兩家超市經常會爾虞我詐地相互競爭。
有一天,撰大前超市故意放出一個不利於每日鮮超市的消息給一位鎮民甲:說每日鮮超市賣的香瓜很難吃,每日鮮超市派遣在撰大前超市中的密探在第一時間得知這個消息。由於這個小鎮中的居民皆很單純,只要聽到他的好友告訴他一個消息,他便會信以為真,並會傳播給他的好友;但是他若知道消息為誤傳,便不會再繼續傳播下去。
每日鮮超市為了使不利的消息傳播的範圍減小,在第一時間(假設甲還沒傳播消息出去)希望找到鎮民甲以外的一位鎮民乙,送他一籃香瓜,使得他就算聽到這個不利消息,也不會繼續傳播消息給他的好友。為了使這個謠言防堵的效果達到最好,必須慎選這位要贈送香瓜的鎮民乙,使得最後會獲知此不利消息的鎮民數達到最少。
舉例說明:鎮上有6個鎮民,鎮民編號從正整數1依序表示,而鎮民間的好友關係配對有$(1,3), (3,4), (5,1), (2,6), (4,5), (6,3)$,及$(5,3)$。若鎮民甲為編號$4$的鎮民,並挑選編號$6$的鎮民為防堵對象,最後會獲知此不利消息的鎮民會有$\{1, 3, 4, 5, 6\}$;挑選編號$3$的鎮民為防堵對象,最後會獲知此不利消息的鎮民只會有$\{1, 3, 4, 5\}$,可達到最佳防堵效果。
現在每日鮮超市已握有鎮上的居民間存在的好友關係,給定將散播不利消息的鎮民甲,請你寫一個程式來找出要贈送香瓜的鎮民乙,以及防堵後會獲知此不利消息的鎮民數(包含鎮民甲及鎮民乙)。
第一行為一正整數$N (1\leq N\leq 30000)$及$M (1\leq M\leq 30000)$,以空白分開。其中$N$ 表示鎮民數目,$M$ 表示好友的鎮民配對數目。鎮民編號從正整數$1$ 依序表示,例如有三個鎮民,則以鎮民$1$,鎮民$2$,鎮民$3$來表示。
第二行起的M 行,每一行表示互為好友的鎮民配對。兩個鎮民編號間以空白分開,例如1 3 表示鎮民$1$和鎮民$3$互為好友,且出現的兩個編號間的大小順序性不一定。第$(M+2)$行為一正整數$K$,表示鎮民甲的編號。
請由螢幕輸出所找出鎮民乙的編號及最後會獲知此不利消息的鎮民數,兩者以空白隔開。若有多個符合條件的鎮民乙,請輸出編號最小者。 若不管有沒有選擇一個防堵消息傳播的鎮民乙,皆不會影響會獲知此不利消息的鎮民數,則只需輸出$0$。
NEOJ Problem 179
2009 TOI 研習營初選
No. | Testdata Range | Constraints | Score |
---|---|---|---|
1 | 0 | 20 | |
2 | 1 | 20 | |
3 | 2 | 20 | |
4 | 3 | 20 | |
5 | 4 | 20 |