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