題目描述
第二次世界大戰時期, 英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出的每一架飛機都需要配備在航行技能和語言上能互相配合的2 名飛行員, 其中1 名是英國飛行員,另1名是外籍飛行員。在眾多的飛行員中,每一名外籍飛行員都可以與其他若干名英國飛行員很好地配合。 如何選擇配對飛行的飛行員才能使一次派出最多的飛機。對於給定的外籍飛行員與英國飛行員的配合情況,試設計乙個演算法找出最佳飛行員配對方案,使皇家空軍一次能派出最多的飛機。
輸入 第1 行: 有 2個正整數m和 n。n是皇家空軍的飛行員總數(n<100);m是外籍飛行員數。外籍飛行員編號為 1~m;英國飛行員編號為 m+1~n。 接下來每行有2個正整數 i 和 j ,表示外籍飛行員 i 可以和英國飛行員 j 配合。 檔案最後以 2 個 -1 結束
輸出 第 1 行是最佳飛行員配對方案一次能派出的最多的飛機數 m。 接下來 m 行是最佳飛行員配對方案。每行有 2個正整數 i 和 j ,表示在最佳飛行員配對方案中,飛行員 i 和飛行員 j 配對。 如果所求的最佳飛行員配對方案不存在,則輸出『no solution!』 。
樣例輸入
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這道題太裸了,源點連邊到外國人, 外國人連邊到飛行員, 飛行員連到匯點 。。。。。。
**:
#include
#include
#include
#define maxn 1000
#define maxm 500000
#define inf 1234567890
using
namespace
std;
struct node
;//使用前要初始化
struct isap
void init(int nn, int ss, int tt)
void addedge(int u, int v, int c)
int aug(int i, int augco)
mind = min(mind, d[j]);}}
if (augc == 0)
return augc;
}int max_flow()
return f;
}};isap isap;
int get()
while(ch==' '||ch=='\n'||ch=='\t');
int ret=0;
while(ch>='0'&&ch<='9')
return ret;
}void read()
int main()
網路流 飛行員配對方案問題
第二次世界大戰時期,英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出的每一架飛機都需要配備在航行技能和語言上能互相配合的2 名飛行員,其中1 名是英國飛行員,另1 名是外籍飛行員。在眾多的飛行員中,每一名外籍飛行員都可以與其他若干名英國飛行員很好地配合。如何選擇配對飛行的飛行員才能使一次派出...
網路流 NEW!飛行員配對方案問題
英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出的每一架飛機都需要配備在航行技能和語言上能互相配合的2 名飛行員,其中1 名是英國飛行員,另1名是外籍飛行員。在眾多的飛行員中,每一名外籍飛行員都可以與其他若干名英國飛行員很好地配合。如何選擇配對飛行的飛行員才能使一次派出最多的飛機。對於給定的...
飛行員配對方案問題
題目描述 問題描述 第二次世界大戰時期,英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出的每一架飛機都需要配備在航行技能和語言上能互相配合的2名飛行員,其中1名是英國飛行員,另1名是外籍飛行員。在眾多的飛行員中,每一名外籍飛行員都可以與其他若干名英國飛行員很好地配合。如何選擇配對飛行的飛行員...