網路流24題 飛行員配對方案問題

2021-09-27 10:39:00 字數 3112 閱讀 3733

題目內容

樣例提示

題解題集

題目名稱:行員配對方案問題

第二次世界大戰時期……英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出的每一架飛機都需要配備在航行技能和語言上能互相配合的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的邊,每個英國飛行員向能配合的外...