第二次世界大戰時期,英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出的每一架飛機都需要配備在航行技能和語言上能互相配合的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。
如果所求的最佳飛行員配對方案不存在,則輸出『no solution!』。
5 10
1 71 8
2 62 9
2 10
3 73 8
4 74 8
5 10
-1 -1
4
網路流模板題,二分圖最大匹配。
另外設乙個源點s,向每個左邊的點連容量為1的邊
以及設乙個匯點t,每個右邊的點向它連一條容量為1的邊
中間的按照題目資料連容量為1的邊。
#include
#include
#include
#include
#include
#include
using
namespace
std;
const
int n=2100;
const
int m=2000000;
const
int inf=0x7fffffff;
struct note
;note side[m];
int last[n],cur[n],dis[n];
int n,m,ans,l=1,s,t;
void add(int x,int y)
void init()
}bool bfs()
} if (dis[t]==0) return
false;
else
return
true;
}int dfs(int x,int maxf)
return ret;
}void dinic()
}int main()
ps邊集陣列一定要定好初值,讓i和i^1為一對反向邊,不然就會錯。
↑↑↑↑↑↑↑↑↑↑
因為這個調了n久,發現後非常不爽。。。。
網路流 飛行員配對方案問題
題目描述 第二次世界大戰時期,英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出的每一架飛機都需要配備在航行技能和語言上能互相配合的2 名飛行員,其中1 名是英國飛行員,另1名是外籍飛行員。在眾多的飛行員中,每一名外籍飛行員都可以與其他若干名英國飛行員很好地配合。如何選擇配對飛行的飛行員才能使...
網路流 NEW!飛行員配對方案問題
英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出的每一架飛機都需要配備在航行技能和語言上能互相配合的2 名飛行員,其中1 名是英國飛行員,另1名是外籍飛行員。在眾多的飛行員中,每一名外籍飛行員都可以與其他若干名英國飛行員很好地配合。如何選擇配對飛行的飛行員才能使一次派出最多的飛機。對於給定的...
飛行員配對方案問題
題目描述 問題描述 第二次世界大戰時期,英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出的每一架飛機都需要配備在航行技能和語言上能互相配合的2名飛行員,其中1名是英國飛行員,另1名是外籍飛行員。在眾多的飛行員中,每一名外籍飛行員都可以與其他若干名英國飛行員很好地配合。如何選擇配對飛行的飛行員...