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

2021-07-25 11:27:42 字數 1403 閱讀 4932

【問題描述】

飛行大隊有若干個來自各地的駕駛員,專門駕駛一種型號的飛機,這種飛機每架有兩個駕駛員,需乙個正駕駛員和乙個副駕駛員。由於種種原因,例如相互配合的問題,有些駕駛員不能在同一架飛機上飛行,問如何搭配駕駛員才能使出航的飛機最多。

如圖,假設有10個駕駛員,如圖中的v1,v2,…,v10就代表達10個駕駛員,其中v1,v2,v3,v4,v5是正駕駛員,v6,v7,v8,v9,v10是副駕駛員。如果乙個正駕駛員和乙個副駕駛員可以同機飛行,就在代表他們兩個之間連一條線,兩個人不能同機飛行,就不連。例如v1和v7可以同機飛行,而v1和v8就不行。請搭配飛行員,使出航的飛機最多。注意:因為駕駛工作分工嚴格,兩個正駕駛員或兩個副駕駛員都不能同機飛行.

【輸入格式】

輸入檔案有若干行

第一行,兩個整數n與n1,表示共有n個飛行員(2<=n<=100),其中有n1名飛行員是正駕駛員.

下面有若干行,每行有2個數字a,b。表示正駕駛員a和副駕駛員b可以同機飛行。

注:正駕駛員的編號在前,即正駕駛員的編號小於副駕駛員的編號.

【輸出格式】

輸出檔案有一行

第一行,1個整數,表示最大起飛的飛機數。

【題解】

加上源點和匯點,求最大流(劉)。
【**】

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#define min(x,y) x#define max(x,y) x>y?x:y

const int maxf=0x7fffffff;

using namespace std;

struct arra[1000001];

int n,m,nm,ans;

int ls[4001],q[4001],ha[4001];

void add(int u,int v,int z)

void init()

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

}bool bfs()

i=a[i].next;}}

if (ha[n+1]==-1) return

0; else

return1;}

int dfs(int

x,int maxf)

i=a[i].next;

}if (used==0) ha[x]=-1;

return used;

}void code()

int main()

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

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

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

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

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

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