題目背景
第二次世界大戰期間,英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出的每一架飛機都需要配備在航行技能和語言上能互相配合的兩名飛行員,其中一名是英國飛行員,另一名是外籍飛行員。在眾多的飛行員中,每一名外籍飛行員都可以與其他若干名英國飛行員很好地配合。
題目描述
一共有 n
nn 個飛行員,其中有 m
mm 個外籍飛行員和 (n−
m)
(n - m)
(n−m
)個英國飛行員,外籍飛行員從 1
11 到 m
mm 編號,英國飛行員從 m+1
m+1m+
1 到 n
nn 編號。 對於給定的外籍飛行員與英國飛行員的配合情況,試設計乙個演算法找出最佳飛行員配對方案,使皇家空軍一次能派出最多的飛機。
輸入格式
輸入的第一行是用空格隔開的兩個正整數,分別代表外籍飛行員的個數 m
mm 和飛行員總數 nnn。
從第二行起到倒數第二行,每行有兩個整數 u,v
u,vu,
v,代表外籍飛行員 u
uu 可以和英國飛行員 v
vv 配合。
輸入的最後一行保證為−1-1
−1,代表輸入結束。
輸出格式
本題存在$ special$ jud
ge
judge
judge。
請輸出能派出最多的飛機數量,並給出一種可行的方案。
輸出的第一行是乙個整數,代表一次能派出的最多飛機數量,設這個整數是 kkk。
第 2
22 行到第 k+1
k+1k+
1 行,每行輸出兩個整數u,v
u,vu,
v,代表在你給出的方案中,外籍飛行員 u
uu 和英國飛行員 v
vv 配合。這 k
kk 行的u
uu 與 v
vv 應該互不相同。
輸入輸出樣例
輸入5 10
1 71 8
2 62 9
2 10
3 73 8
4 74 8
5 10
-1 -1輸出4
1 72 9
3 85 10
說明/提示
【資料範圍與約定】
對於 100
10010
0% 的資料,保證1≤m
≤n
<
100,
<1≤
u≤
m n, 1≤m≤n<100,<1≤u≤m1≤ m≤n<10 0,<1≤ u≤mn, 同一組配對關係只會給出一次。 【提示】 請注意輸入的第一行先讀入 m mm,再讀入 nnn。 解題思路 這一題和 最大匹配 的模板一樣, **#include.h>
using namespace std;
int n,m,x,y,k,ans,head[
10010
],use[
10010
],boy[
10010
],lyx[
10010];
struct ca[
10010];
void
add(int x,int y)
bool find
(int x)}}
return0;
}int main()
for(int i=
1;i<=n;i++
)printf
("%d\n"
,ans)
;for
(int i=n+
1;i<=m;i++
)}
洛谷 P2756 飛行員配對方案問題
題目背景 第二次世界大戰時期.題目描述 英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出的每一架飛機都需要配備在航行技能和語言上能互相配合的2 名飛行員,其中1 名是英國飛行員,另1名是外籍飛行員。在眾多的飛行員中,每一名外籍飛行員都可以與其他若干名英國飛行員很好地配合。如何選擇配對飛行的飛...
洛谷P2756 飛行員配對方案問題
第二次世界大戰時期.英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出的每一架飛機都需要配備在航行技能和語言上能互相配合的2 名飛行員,其中1 名是英國飛行員,另1名是外籍飛行員。在眾多的飛行員中,每一名外籍飛行員都可以與其他若干名英國飛行員很好地配合。如何選擇配對飛行的飛行員才能使一次派出最...
洛谷 P2756 飛行員配對方案問題
題目背景 第二次世界大戰時期.題目描述 英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出的每一架飛機都需要配備在航行技能和語言上能互相配合的2 名飛行員,其中1 名是英國飛行員,另1名是外籍飛行員。在眾多的飛行員中,每一名外籍飛行員都可以與其他若干名英國飛行員很好地配合。如何選擇配對飛行的飛...