思路
網路流入門題,建圖,超級源點連向m個外籍飛行員,外籍飛行員連向英國飛行員,英國飛行員連向超級匯點t,邊權都為1,然後跑dinic。在增減流量的地方維護match陣列。
#include
#include
#include
#include
#include
using
namespace std;
int n,m;
int x, y;
const
int max_n =
310;
const
int max_m =
30010
;const
int inf =
0x3f3f3f3f
;struct edge e[max_m]
;int head[max_n]
, cnt =0;
int s, t;
int dis[max_n]
;int matcha[
110]
;int matchb[
110]
;void
add(
int u,
int v,
int w)
intbfs()
}}return
(dis[t]!=-
1);}
intdfs
(int u,
int flow)}if
(!flow)
break;}
}if(!flow_)dis[u]=-
1;return flow_;
}int
dinic()
return ans;
}int
main()
for(
int i =
1; i <= n; i++
)while
(scanf
("%d%d"
,&x,
&y)!=
eof)
printf
("%d\n"
,dinic()
);for(
int i =
1; i <= m; i++
)else
if(i == matcha[matchb[i]])
}return0;
}
P2756 飛行員配對方案問題
題目背景 第二次世界大戰時期.題目描述 英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出的每一架飛機都需要配備在航行技能和語言上能互相配合的2 名飛行員,其中1 名是英國飛行員,另1名是外籍飛行員。在眾多的飛行員中,每一名外籍飛行員都可以與其他若干名英國飛行員很好地配合。如何選擇配對飛行的飛...
P2756 飛行員配對方案問題
英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出的每一架飛機都需要配備在航行技能和語言上能互相配合的2 名飛行員,其中1 名是英國飛行員,另1名是外籍飛行員。在眾多的飛行員中,每一名外籍飛行員都可以與其他若干名英國飛行員很好地配合。如何選擇配對飛行的飛行員才能使一次派出最多的飛機。對於給定的...
p2756 飛行員配對方案問題
傳送門 題目 英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出的每一架飛機都需要配備在航行技能和語言上能互相配合的2 名飛行員,其中1 名是英國飛行員,另1名是外籍飛行員。在眾多的飛行員中,每一名外籍飛行員都可以與其他若干名英國飛行員很好地配合。如何選擇配對飛行的飛行員才能使一次派出最多的飛...