[網路流24題] 搭配飛行員
★★☆ 輸入檔案: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
4 配對的飛行員之間連邊,如果要用最大流,把源點0與正駕駛員連邊,把匯點n+1與副駕駛員連邊,流量都為1,如果要用二分圖匹配,直接連邊完跑一遍匈牙利演算法就行了。。
注意點:while ((x=read(),y=read())!=eof)不知道為什麼會死迴圈。。
網路流dinic:
#include
#include
#include
#include
using namespace std;
intm,n,i,x,y,ans,sum,cnt=1,h[100001]=,head,tail,q[100001],dis[100001];
struct node
;node edge[100001];
intread()
while (ch>='0' && ch<='9')
return w*c;
}void add(int u,int v,int w)
bool bfs()
p=edge[p].next;}}
if (dis[n+1]>0)
return true;
else
return false;
}int dfs(int
x,int f)
i=edge[i].next;
}if (!used)
dis[x]=-1;
return used;
}int main()
for (i=m+1;i<=n;i++)
while ((scanf("%d
%d",&x,&y))!=eof)
ans=0;
while (bfs())
while (sum=dfs(0,0x7fffffff))
ans+=sum;
printf("%d",ans);
fclose(stdin);
fclose(stdout);
return
0;}
二分圖匹配:
#include
#include
using
namespace
std;
int cnt=1,head[100001]=,part[100001]=,n,m,i,x,y,ans;
struct node
;node edge[100001]=;
bool used[100001];
int read()
while (ch>='0' && ch<='9')
return w*c;
}void add(int u,int v)
bool find(int s)
}return
false;
}int main()
ans=0;
for (i=1;i<=m;i++)
printf("%d",ans);
fclose(stdin);
fclose(stdout);
return
0;}
網路流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 問題描述 飛行大隊有若干個來自各地的駕駛員,專門駕駛一種型號的飛機,這種飛機每架有兩個駕駛員,需乙個正駕駛員和乙個副駕駛員。由於種種原因,例如相互配合的問題,有些駕駛員不能在同一架飛機上飛行,...