題目內容
樣例提示
題解題集
題目名稱:行員配對方案問題
第二次世界大戰時期……英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出的每一架飛機都需要配備在航行技能和語言上能互相配合的2
22名飛行員,其中1
11名是英國飛行員,另1
11名是外籍飛行員。在眾多的飛行員中,每一名外籍飛行員都可以與其他若干名英國飛行員很好地配合。如何選擇配對飛行的飛行員才能使一次派出最多的飛機。對於給定的外籍飛行員與英國飛行員的配合情況,試設計乙個演算法找出最佳飛行員配對方案,使皇家空軍一次能派出最多的飛機。
對於給定的外籍飛行員與英國飛行員的配合情況,程式設計找出乙個最佳飛行員配對方案,使皇家空軍一次能派出最多的飛機。
有n
nn個英國空軍和m
mm個外籍空軍,一架飛機需要一對互相配合的英國空軍和外籍空軍配合。給出配合情況,求出最多能發動多少飛機。
第1
11行有2
22個正整數m
mm和n
nn。n
nn是皇家空軍的飛行員總數(
n<
100)
(n<100)
(n<10
0);m
mm 是外籍飛行員數(
m<=n
)(m<=n)
(m<=n
)。外籍飛行員編號為 1
11~m
mm;英國飛行員編號為 m+1
m+1m+
1~nn
n。接下來每行有2
22個正整數i
ii和j
jj,表示外籍飛行員i
ii可以和英國飛行員j
jj配合。最後以2
22個−1-1
−1結束。第1
11行是最佳飛行員配對方案一次能派出的最多的飛機數m
mm。接下來m
mm行是最佳飛行員配對方案。每行有2
22個正整數i
ii和j
jj,表示在最佳飛行員配對方案中,飛行員 i
ii和飛行員 j 配對。如果所求的最佳飛行員配對方案不存在,則輸出『no solution!
』。
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
注意題目**!
這是一道最大流裸題。
從原點開始,向每個外籍飛行員連邊,容量為1
11。(因為每個外籍飛行員只能被指派一次)
如果外籍飛行員i
ii與英國飛行員j
jj配合,那麼就從i
ii向j
jj連邊,容量為1
11。(每個外籍飛行員與每個英國飛行員最多配合一次)
從每個英國飛行員向匯點連邊,容量為1
11。(一對飛行員相互配合只能發動一架飛機)
拿樣例說話,如圖所示
其中ff
f表示外籍飛行員,e
ee表示英國飛行員。
然後跑一遍din
ic
dinic
dini
c就得到答案了。
//c++
#include
#include
#include
#include
#define downt(i,n) for(int i=n;i;i=back[i])
#define forto(name,i,d,u) for(name i=d;i<=u;i++)
#define foruntil(name,i,d,u) for(name i=d;iconst
int nm=
201;
inline
void
output
(long
long o)
;inline
long
long
input()
;template
<
int nn,
int mm,
typename name>
struct network
#undef nnn
#undef mmmm
void
init()
void
add(
int f,
int t,name cap)
void
insert
(int f,
int t,name cap)
}bool
climb()
return level[t]
;}name augment
(int p,name m)
return sum;
}name dinic
(name inf)
return maximum;
}void
new1
(short m)
output
(dinic
(100))
,putchar
('\n');
forto
(short
,i,1
,m)for
(short j=last[i]
;back[j]
;j=back[j])if
(!c[j]
)output
(i),
putchar
(' '),
output
(to[j]),
putchar
('\n');
}};network<
200,
40000
,short
>pilot;
intmain()
inline
void
output
(long
long o)
inline
long
long
input()
網路流24題 搭配飛行員 飛行員配對方案
網路流24題 搭配飛行員 輸入檔案 flyer.in 輸出檔案 flyer.out 簡單對比 時間限制 1 s 記憶體限制 128 mb 問題描述 飛行大隊有若干個來自各地的駕駛員,專門駕駛一種型號的飛機,這種飛機每架有兩個駕駛員,需乙個正駕駛員和乙個副駕駛員。由於種種原因,例如相互配合的問題,有些...
網路流24題 飛行員配對方案問題
原題目有special judge所以我將題目去掉special judge之後如下 問題描述 第二次世界大戰時期,英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出 的每一架飛機都需要配備在航行技能和語言上能互相配合的 2 名飛行員,其中 1 名是英國飛 行員,另 1 名是外籍飛行員。在眾多...
網路流24題 飛行員配對方案問題
luogu 2756 給出n個英國飛行員和m個外籍飛行員,給出每個英國飛行員能配合的外籍飛行員編號,求最多可以選出多少對能互相配合的飛行員 最經典的二分圖匹配問題。其實用匈牙利演算法更合適,在時間複雜度上會更加優秀。用網路流來做的話,超級源點向每個英國飛行員連流量為1的邊,每個英國飛行員向能配合的外...