過山車 匈牙利模板

2021-10-02 03:46:10 字數 1570 閱讀 7815

rpg girls今天和大家一起去遊樂場玩,終於可以坐上夢寐以求的過山車了。可是,過山車的每一排只有兩個座位,而且還有條不成文的規矩,就是每個女生必須找個個男生做partner和她同坐。但是,每個女孩都有各自的想法,舉個例子把,rabbit只願意和xhd或pqk做partner,grass只願意和linle或ll做partner,princesssnow願意和水域浪子或偽酷兒做partner。考慮到經費問題,boss劉決定只讓找到partner的人去坐過山車,其他的人,嘿嘿,就站在下面看著吧。聰明的acmer,你可以幫忙算算最多有多少對組合可以坐上過山車嗎?

輸入資料的第一行是三個整數k , n, m ,分別表示可能的組合數目,女生的人數,男生的人數。0對於每組資料,輸出乙個整數,表示可以坐上過山車的最多組合數。

這道題意思就是讓男女生在滿足規定條件下盡可能多得匹配,由此我們可以想到離散數學中的二部圖,男生和女生分為兩個點集,心儀關係作為邊,從中找出最大匹配即可滿足條件。也就是說,這是一道匈牙利模板題,關於匈牙利演算法,請戳這裡。注意在hdu上面樣例的m,n跟說明中的m,n是反過來的.

123

4567

891011

1213

1415

1617

1819

2021

2223

2425

2627

2829

3031

3233

3435

3637

3839

4041

4243

4445

4647

4849

5051

5253

5455

5657

58

#include#define ll long long int

#define init(a,b) memset(a,b,sizeof(a))

#define rep(i,a,b) for(int i=a;i=a;i--)

//b——0,-1,128,0x3f,127 ,字元

const double pi = acos(-1);

const double e = exp(1.0);

const ll mod =1e9+7;

const int max=0x7fffffff;

const int min=-0x7fffffff;

const int inf=0x3f3f3f3f;

using namespace std;

int k,m,n;

int line[505][505];

int used[505];

int another[505];

bool find(int x)}}

return false;

}int count()

return sum;

}int main()

cout<

過山車 匈牙利模板

rpg girls今天和大家一起去遊樂場玩,終於可以坐上夢寐以求的過山車了。可是,過山車的每一排只有兩個座位,而且還有條不成文的規矩,就是每個女生必須找個個男生做partner和她同坐。但是,每個女孩都有各自的想法,舉個例子把,rabbit只願意和xhd或pqk做partner,grass只願意和l...

過山車(匈牙利演算法模板)

題目描述 rpg girls今天和大家一起去遊樂場玩,終於可以坐上夢寐以求的過山車了。可是,過山車的每一排只有兩個座位,而且還有條不成文的規矩,就是每個女生必須找個個男生做partner和她同坐。但是,每個女孩都有各自的想法,舉個例子把,rabbit只願意和xhd或pqk做partner,grass...

HDU 2063 過山車 匈牙利演算法模板

匈牙利演算法模板。大概過程就是對乙個點進行匹配時,嘗試匹配所有與它相連的點。如果這個點沒有被匹配,或者這個點被匹配了,但是匹配它的點可以重新找到乙個匹配點,從而騰出這個點,那麼就可以與這個點匹配。used陣列標記遍歷到的v。如果不標記,增廣過程中乙個點會重複匹配v。最大匹配就是對一邊所有的點嘗試匹配...