p1525 關押罪犯
題目描述
S 城現有兩座監獄,一共關押著N 名罪犯,編號分別為1~N。他們之間的關系自然也極不和諧。很多罪犯之間甚至積怨已久,如果客觀條件具備則隨時可能爆發沖突。我們用“怨氣值”(一個正整數值)來表示某兩名罪犯之間的仇恨程度,怨氣值越大,則這兩名罪犯之間的積怨越多。如果兩名怨氣值為c 的罪犯被關押在同一監獄,他們倆之間會發生摩擦,並造成影響力為c 的沖突事件。
每年年末,警察局會將本年內監獄中的所有沖突事件按影響力從大到小排成一個列表,然後上報到S 城Z 市長那裏。公務繁忙的Z 市長只會去看列表中的第一個事件的影響力,如果影響很壞,他就會考慮撤換警察局長。
在詳細考察了N 名罪犯間的矛盾關系後,警察局長覺得壓力巨大。他準備將罪犯們在兩座監獄內重新分配,以求產生的沖突事件影響力都較小,從而保住自己的烏紗帽。假設只要處於同一監獄內的某兩個罪犯間有仇恨,那麽他們一定會在每年的某個時候發生摩擦。
那麽,應如何分配罪犯,才能使Z 市長看到的那個沖突事件的影響力最小?這個最小值是多少?
輸入輸出格式
輸入格式:
輸入文件的每行中兩個數之間用一個空格隔開。第一行為兩個正整數N 和M,分別表示罪犯的數目以及存在仇恨的罪犯對數。接下來的M 行每行為三個正整數aj,bj,cj,表示aj 號和bj 號罪犯之間存在仇恨,其怨氣值為cj。數據保證1<aj=<=bj<=N ,0 < cj≤ 1,000,000,000,且每對罪犯組合只出現一次。
輸出格式:
共1 行,為Z 市長看到的那個沖突事件的影響力。如果本年內監獄中未發生任何沖突事件,請輸出0。
輸入輸出樣例
輸入樣例#1:4 6 1 4 2534 2 3 3512 1 2 28351 1 3 6618 2 4 1805 3 4 12884
3512
說明
【輸入輸出樣例說明】罪犯之間的怨氣值如下面左圖所示,右圖所示為罪犯的分配方法,市長看到的沖突事件影響力是3512(由2 號和3 號罪犯引發)。其他任何分法都不會比這個分法更優。
【數據範圍】對於30%的數據有N≤ 15。對於70%的數據有N≤ 2000,M≤ 50000。對於100%的數據有N≤ 20000,M≤ 100000。
這道題有三種做法
1.普通並查集
2.加權並查集
3.二分答案+dfs驗證
由題意可得最終分為兩個集合即監獄A,B
所以可根據歸屬關系使用並查集 有一句名言說得好:敵人的敵人是朋友 因而在n個人的基礎上再開一倍空間存i人得敵人
對於i,j-----c
四種情況
1.
2.
3.
4.
對ci從大到小排序知道發生沖突即最小答案
p1525 關押罪犯