HDU 3488 Tour 再次感受到KM的強大

2022-05-28 06:45:12 字數 1015 閱讀 9245

題意:這題自己yy了下,沒想到結論還是對的。題目告訴我們乙個有向圖,現在問將圖中的每乙個點都劃分到乙個環中的最少代價是多少?每條邊都有乙個代價。

解法:由於要成環,那麼將這個圖進行拆點,就變成了單向的二分圖了,此時乙個完備匹配就是一種連線策略,只要保證沒有邊是和自己相連,就能夠滿足題目中要求的每個點至少屬於乙個環。證明也是很簡單的。因為我們總可以從乙個完備匹配中找出起點,然後再從匹配點作為起點找......

左圖可以看做是1,2成環,3,4,5成環。

**如下:

#include #include 

#include

#include

#include

using

namespace

std;

intn, m;

const

int inf = 0x3f3f3f3f

;int w[205][205

];int lx[205], ly[205

];int sx[205], sy[205

];int match[205], slack[205

];int path(int

u) }

else

}return

false;}

void

km()

}for (int i = 1; i <= n; ++i)

for (int j = 1; j <= n; ++j) }}

int ret = 0

;

for (int i = 1; i <= n; ++i)

printf(

"%d\n

", -ret);

}int

main()

km();

}return

0;

}

HDU 3488 Tour 再次感受到KM的強大

題意 這題自己yy了下,沒想到結論還是對的。題目告訴我們乙個有向圖,現在問將圖中的每乙個點都劃分到乙個環中的最少代價是多少?每條邊都有乙個代價。解法 由於要成環,那麼將這個圖進行拆點,就變成了單向的二分圖了,此時乙個完備匹配就是一種連線策略,只要保證沒有邊是和自己相連,就能夠滿足題目中要求的每個點至...

HDU 3488 Tour(最大權匹配 KM)

description有 n n 個景點,m role presentation style position relative m m條連通 n n 個景點的單向路,要求用一次或多次線路遊覽完所有景點,一條線路的定義是從乙個景點出發經過若干景點後回到起點,除起點景點經過兩次之外其餘景點只能經過一次...

KM求最優匹配 hdu 3488 Tour

km求最優匹配 hdu 3488 tour km求最優匹配 hdu 3488 tour 題意 給出兩個端點和這兩點間的距離,求出這些邊構成的所有環中 邊和最小是多少,每個點只能用一次,即每個點只能在乙個環中 思路 把每個點拆成兩個點,每條邊的出度點 起點 作為x部,入度點 終點 作為y部 然後進行最...