★★☆ 輸入檔案:flyer.in
輸出檔案:flyer.out
簡單對比
時間限制:1 s 記憶體限制:128 mb
【問題描述】
飛行大隊有若干個來自各地的駕駛員,專門駕駛一種型號的飛機,這種飛機每架有兩個駕駛員,需乙個正駕駛員和乙個副駕駛員。由於種種原因,例如相互配合的問題,有些駕駛員不能在同一架飛機上飛行,問如何搭配駕駛員才能使出航的飛機最多。
如圖,假設有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個整數,表示最大起飛的飛機數。
【輸入輸出樣例】
輸入檔名: flyer.in
10 5
1 7
2 6
2 10
3 7
4 8
5 9
輸出檔名:flyer.out
4hungary
#include#include網路流之二分圖匹配(最大流)#define m(s) memset(s,0,sizeof s)
using
namespace
std;
const
int n=101
;int
n,m,ans,match[n];
bool
vis[n],e[n][n];
bool hungary(int
x) }
}return0;
}int
main()
printf("%d
",ans);
return0;
}
#include#include#include
#define r register
#define inf 0x3f3f3f3f
using
namespace
std;
intread()
while(ch>='
0'&&ch<='9')
return f?x:-x;
}const
int n=1e5+10
;int
s,t,n,m;
int head[n],dis[n],q[n*2
];struct
nodee[n
<<2];int tot=1
;void add(int x,int y,int
z);head[x]=tot;
}bool
bfs()}}
return dis[t]!=-1;}
int dfs(int now,int
f) }
return f-rest;
}int
dinic()
intmain()
網路流24題 搭配飛行員
題目 洛谷p2756 tips 兩處的輸出格式不同,提交時注意輸出格式233 解法題目其實是一道二分圖匹配 匈牙利水過 考慮網路流建模。建立兩點超源 s s 超匯t role presentation style position relative t t,對於搭配,若 u u 與v role pr...
網路流24題 搭配飛行員
飛行大隊有若干個來自各地的駕駛員,專門駕駛一種型號的飛機,這種飛機每架有兩個駕駛員,需乙個正駕駛員和乙個副駕駛員。由於種種原因,例如相互配合的問題,有些駕駛員不能在同一架飛機上飛行,問如何搭配駕駛員才能使出航的飛機最多。因為駕駛工作分工嚴格,兩個正駕駛員或兩個副駕駛員都不能同機飛行。input 第一...
搭配飛行員 網路流24題 1 24
搭配飛行員 題面 飛行大隊有若干個來自各地的駕駛員,專門駕駛一種型號的飛機,這種飛機每架有兩個駕駛員,需乙個正駕駛員和乙個副駕駛員。由於種種原因,例如相互配合的問題,有些駕駛員不能在同一架飛機上飛行,問如何搭配駕駛員才能使出航的飛機最多。因為駕駛工作分工嚴格,兩個正駕駛員或兩個副駕駛員都不能同機飛行...