網路流24題 搭配飛行員(最大流)

2021-08-28 10:55:29 字數 1370 閱讀 1968

飛行大隊有若干個來自各地的駕駛員,專門駕駛一種型號的飛機,這種飛機每架有兩個駕駛員,需乙個正駕駛員和乙個副駕駛員。由於種種原因,例如相互配合的問題,有些駕駛員不能在同一架飛機上飛行,問如何搭配駕駛員才能使出航的飛機最多呢?

p.s.因為駕駛工作分工嚴格,兩個正駕駛員或兩個副駕駛員都不能同機飛行。

第一行,兩個整數 n 與m,表示共有 n 個飛行員,其中有 m 名飛行員是正駕駛員。 下面有若干行,每行有 2 個數字a、 b。表示正駕駛員 a 和副駕駛員 b 可以同機飛行。 p.s.正駕駛員的編號在前,即正駕駛員的編號小於副駕駛員的編號。

僅一行乙個整數,表示最大起飛的飛機數。

10 5

1 72 6

2 10

3 74 8

5 94

2<=n<=100

最裸的板子題,沒有之一。

對於每個可以同機飛行的正副駕駛員,連一條容量為1的邊,可以跑一次最大匹配或所有正駕駛員向s連容量為1的邊,所有副駕駛向t連容量為1的邊跑一遍最大流即可。

最大流【可做模板】

#includeusing namespace std;

const int maxn=3010;

const int inf=0x3f3f3f3f;

int cnt,n,m,s,t;

int head[maxn],depth[maxn],cur[maxn];

int nxt[maxn],to[maxn],w[maxn];

queueq;

int vis[maxn];

bool bfs()

} }if(depth[t]==0)

return false;

return true;

}int dfs(int u,int dist)

} }return 0;

}int dinic()

return ans;

}void add(int x,int y,int z)

void add(int x,int y,int z)

int main()

二分圖最大匹配【匈牙利演算法】

#includeusing namespace std;

const int maxn=101;

int line[maxn][maxn];

int fp[maxn],used[maxn],m,n;

bool find(int x)

} }return false;

}int main()

int sum=0;

for(int i=1;i<=m;++i)

cout

}

網路流24題 搭配飛行員(最大流)

飛行大隊有若干個來自各地的駕駛員,專門駕駛一種型號的飛機,這種飛機每架有兩個駕駛員,需乙個正駕駛員和乙個副駕駛員。由於種種原因,例如相互配合的問題,有些駕駛員不能在同一架飛機上飛行,問如何搭配駕駛員才能使出航的飛機最多呢?p.s.因為駕駛工作分工嚴格,兩個正駕駛員或兩個副駕駛員都不能同機飛行。第一行...

網路流24題 搭配飛行員

題目 洛谷p2756 tips 兩處的輸出格式不同,提交時注意輸出格式233 解法題目其實是一道二分圖匹配 匈牙利水過 考慮網路流建模。建立兩點超源 s s 超匯t role presentation style position relative t t,對於搭配,若 u u 與v role pr...

網路流24題 搭配飛行員

飛行大隊有若干個來自各地的駕駛員,專門駕駛一種型號的飛機,這種飛機每架有兩個駕駛員,需乙個正駕駛員和乙個副駕駛員。由於種種原因,例如相互配合的問題,有些駕駛員不能在同一架飛機上飛行,問如何搭配駕駛員才能使出航的飛機最多。因為駕駛工作分工嚴格,兩個正駕駛員或兩個副駕駛員都不能同機飛行。input 第一...