★★☆ 輸入檔案: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
4solution:
每個主飛行員只能和特定副飛行員一起,所以他們之間有一條邊,並且每個主飛行員只能使用一次,副飛行員也只能使用一次,所以建圖應為s和主飛行員連一條邊,容量為1,;t和副飛行員連邊,容量為1,;每個可以一起的主、副飛行員之間連邊,因為前兩種邊已經限制,所以主、副飛行員之間邊的容量大於0即可。
建完圖盤最大流即可。
1 #include2 #include3 #include4using
namespace
std;
5#define min(a,b) ((a)
6#define qq 1e9
7int
read()
14 ch=getchar();15}
16while(ch>='
0'&&ch<='9'
) 20
return s*f;21}
22int n,r[105],tot,deep[105
],s,t;
23int head,tail,queue[105
];24
struct
oo c[10005
];27
void add(int x,int y,int
z) 33
bool bfs(int s,int
t) 47}48
}49}50
return0;
51}52int dfs(int opt,int
fw)
56int tmp=fw,k;
57for(int i=r[opt]; ~i; i=c[i].next)
64 c[i].vv-=k;
65 c[i^1].vv+=k;
66 tmp-=k;67}
68}69return fw-tmp;70}
71int dicnic(int s,int
t)76
return
ans;77}
78int
n1;79
intmain()
90for(int i=n1+1;i<=n;i++)
94while(scanf("
%d%d
",&a,&b)==2)98
int ans=dicnic(s,t);
99 printf("
%d\n
",ans);
100return0;
101}
102int hehe=main();
103int
main()
網路流24題 搭配飛行員
題目 洛谷p2756 tips 兩處的輸出格式不同,提交時注意輸出格式233 解法題目其實是一道二分圖匹配 匈牙利水過 考慮網路流建模。建立兩點超源 s s 超匯t role presentation style position relative t t,對於搭配,若 u u 與v role pr...
網路流24題 搭配飛行員
飛行大隊有若干個來自各地的駕駛員,專門駕駛一種型號的飛機,這種飛機每架有兩個駕駛員,需乙個正駕駛員和乙個副駕駛員。由於種種原因,例如相互配合的問題,有些駕駛員不能在同一架飛機上飛行,問如何搭配駕駛員才能使出航的飛機最多。因為駕駛工作分工嚴格,兩個正駕駛員或兩個副駕駛員都不能同機飛行。input 第一...
網路流24題 搭配飛行員
輸入檔案 flyer.in輸出檔案 flyer.out簡單對比 時間限制 1 s 記憶體限制 128 mb 問題描述 飛行大隊有若干個來自各地的駕駛員,專門駕駛一種型號的飛機,這種飛機每架有兩個駕駛員,需乙個正駕駛員和乙個副駕駛員。由於種種原因,例如相互配合的問題,有些駕駛員不能在同一架飛機上飛行,...