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是反過來的.
1234567
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
#define per(i,b,a) for(int i=b-1;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
}
return0;}
過山車 匈牙利模板
rpg girls今天和大家一起去遊樂場玩,終於可以坐上夢寐以求的過山車了。可是,過山車的每一排只有兩個座位,而且還有條不成文的規矩,就是每個女生必須找個個男生做partner和她同坐。但是,每個女孩都有各自的想法,舉個例子把,rabbit只願意和xhd或pqk做partner,grass只願意和l...
過山車(匈牙利演算法模板)
題目描述 rpg girls今天和大家一起去遊樂場玩,終於可以坐上夢寐以求的過山車了。可是,過山車的每一排只有兩個座位,而且還有條不成文的規矩,就是每個女生必須找個個男生做partner和她同坐。但是,每個女孩都有各自的想法,舉個例子把,rabbit只願意和xhd或pqk做partner,grass...
HDU 2063 過山車 匈牙利演算法模板
匈牙利演算法模板。大概過程就是對乙個點進行匹配時,嘗試匹配所有與它相連的點。如果這個點沒有被匹配,或者這個點被匹配了,但是匹配它的點可以重新找到乙個匹配點,從而騰出這個點,那麼就可以與這個點匹配。used陣列標記遍歷到的v。如果不標記,增廣過程中乙個點會重複匹配v。最大匹配就是對一邊所有的點嘗試匹配...