網路流二十四題之一 飛行員配對問題

2021-08-09 12:23:38 字數 2242 閱讀 8352

«問題描述:

第二次世界大戰時期,英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出

的每一架飛機都需要配備在航行技能和語言上能互相配合的2 名飛行員,其中1 名是英國飛

行員,另1名是外籍飛行員。在眾多的飛行員中,每一名外籍飛行員都可以與其他若干名英

國飛行員很好地配合。如何選擇配對飛行的飛行員才能使一次派出最多的飛機。對於給定的

外籍飛行員與英國飛行員的配合情況,試設計乙個演算法找出最佳飛行員配對方案,使皇家空

軍一次能派出最多的飛機。

«程式設計任務:

對於給定的外籍飛行員與英國飛行員的配合情況,程式設計找出乙個最佳飛行員配對方案,

使皇家空軍一次能派出最多的飛機。

«資料輸入:

由檔案input.txt提供輸入資料。檔案第1 行有2個正整數m和n。n是皇家空軍的飛行

員總數(n<100);m是外籍飛行員數。外籍飛行員編號為1~m;英國飛行員編號為m+1~n。

接下來每行有2個正整數i和j,表示外籍飛行員i可以和英國飛行員j配合。檔案最後以2

個-1 結束。

«結果輸出:

程式執行結束時,將最佳飛行員配對方案輸出到檔案output.txt 中。第1 行是最佳飛行

員配對方案一次能派出的最多的飛機數m。接下來m 行是最佳飛行員配對方案。每行有2

個正整數i和j,表示在最佳飛行員配對方案中,飛行員i和飛行員j 配對。

如果所求的最佳飛行員配對方案不存在,則輸出『no solution!』。

輸入檔案示例 輸出檔案示例

input.txt output.txt

5 10

1 7

1 8

2 6

2 9

2 10

3 7

3 8

4 7

4 8

5 10

-1 -1

輸出:

4 1 7

2 9

3 8

5 10

這道題真的有毒,為什麼我總是得不出正確的分配結果,還說這道題有多解……以後在研究吧。

這道題是二分圖匹配,用源點接外國飛行員,匯點接英國飛行員,中間按照輸入連就行

#include 

#include

#include

#include

using

namespace

std;

const

int inf=0x3f3f3f3f;

const

int maxn=150;//點數的最大值

const

int maxm=20500;//邊數的最大值

struct node

edge[maxm];

int tol;

int dep[maxn];//dep為點的層次

int head[maxn];

int n;

void init()

void addedge(int u,int v,int w)//第一條變下標必須為偶數

int bfs(int start,int end)}}

return0;}

int dinic(int start,int end)

for(int i=0;istack[i]].cap-=min;

edge[stack[i]^1].cap+=min;

}res+=min;

top=loc;

u=edge[stack[top]].from;

}for(int i=cur[u];i!=-1;cur[u]=i=edge[i].next)

if(edge[i].cap!=0&&dep[u]+1==dep[edge[i].to])

break;

if(cur[u]!=-1)

else}}

return res;

}void print_all_edge()

}int m;

int main()

for(int i = m+1;i<=n;i++)

while(scanf("%d%d",&u,&v)!=eof)

int ans = dinic(0,n+1);

print_all_edge();

if(ans)printf("%d\n",ans);

else

return

0;}

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

網路流24題 搭配飛行員 輸入檔案 flyer.in 輸出檔案 flyer.out 簡單對比 時間限制 1 s 記憶體限制 128 mb 問題描述 飛行大隊有若干個來自各地的駕駛員,專門駕駛一種型號的飛機,這種飛機每架有兩個駕駛員,需乙個正駕駛員和乙個副駕駛員。由於種種原因,例如相互配合的問題,有些...

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

網路流 題目描述 英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出的每一架飛機都需要配備在航行技能和語言上能互相配合的2 名飛行員,其中1 名是英國飛行員,另1名是外籍飛行員。在眾多的飛行員中,每一名外籍飛行員都可以與其他若干名英國飛行員很好地配合。如何選擇配對飛行的飛行員才能使一次派出最多...

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

原題目有special judge所以我將題目去掉special judge之後如下 問題描述 第二次世界大戰時期,英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出 的每一架飛機都需要配備在航行技能和語言上能互相配合的 2 名飛行員,其中 1 名是英國飛 行員,另 1 名是外籍飛行員。在眾多...