HDU 3488 Tour(最大權匹配 KM)

2021-08-18 03:08:41 字數 2261 閱讀 6585

description

n n

個景點,

m' role="presentation" style="position: relative;">m

m條連通

n n

個景點的單向路,要求用一次或多次線路遊覽完所有景點,一條線路的定義是從乙個景點出發經過若干景點後回到起點,除起點景點經過兩次之外其餘景點只能經過一次,問遊覽完所有景點的最短路程,保證有解

input

第一行一整數

t' role="presentation" style="position: relative;">t

t表示用例組數,每組用例首先輸入兩個整數n,

m n,m

表示景點數和路數,之後

m m

行每行輸入三個整數u,

v,w' role="presentation" style="position: relative;">u,v

,wu,

v,w表示從

u u

景點到v' role="presentation" style="position: relative;">v

v景點有一條長度為

w w

的單向路(2

≤n≤200,m

≤30000,1

≤w≤10

4)' role="presentation" style="position: relative;">(2≤

n≤200,m≤

30000,1

≤w≤10

4)(2

≤n≤200,m

≤30000,1

≤w≤10

4)output

輸出遊覽完所有景點的最短路程

sample input1

6 9

1 2 5

2 3 5

3 1 10

3 4 12

4 1 8

4 6 11

5 4 7

5 6 9

6 5 4

sample output

solution

對於乙個路程a1

→a2→

...→

am→a

1 a1→

a2→.

..→a

m→a1

,將其看作

m m

條邊ai

→ai+

1,1≤

iam→a

1' role="presentation" style="position: relative;">ai→

ai+1

,1≤i

am→a

1ai→

ai+1

,1≤i

am→a

1,那麼問題變成,找

n n

條邊,要求每個點作為起點和頂點各出現一次,且這些邊的邊權和最小,也即二分圖最小匹配,邊權取負後求二分圖最大匹配再取負即為答案

code

#include

#include

#include

#include

using

namespace

std;

#define maxn 205

#define inf 0x3f3f3f3f

int nx,ny;

int linker[maxn],lx[maxn],ly[maxn],slack[maxn];

int visx[maxn],visy[maxn],w[maxn][maxn];

int dfs(int x)

}else

if(slack[y]>tmp)

slack[y]=tmp;

}return0;}

int km()

}int res=0;

for(i=1;i<=ny;i++)

if(linker[i]!=-1)

res+=w[linker[i]][i];

return res;

}int t,n,m;

int main()

nx=ny=n;

printf("%d\n",-km());

}return

0;}

KM求最優匹配 hdu 3488 Tour

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

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

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

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

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