設源點s=0,匯點t=n+1。源點到所有外國飛行員建邊,權值為1;所有英國飛行員到匯點建邊,權值為1;能匹配的外國飛行員與英國飛行員建邊,權值為1。那麼問題轉化為求最大流,s到t的最大流就是最大匹配。其實就是一道sb題
二分匹配也能做 無聊的可以敲一發
#include "bits/stdc++.h"
using namespace std;
const int inf = 0x3f3f3f3f;
struct edge
g[10000];
int s,t;
int head[400];
int cur[400];
int cnt;
int dis[400];
int n,m;
void addedge(int u,int v,int w)
bool bfs()}}
return dis[t]!=0;
}int dfs(int u,int flow)
}if(ans==0) dis[u]=0;
return ans;
}int main()
for(int i=m+1;i<=n;i++)
int x,y;
while(scanf("%d%d",&x,&y)&&(x!=-1&&y!=-1))
int ans=0;
while (bfs())
ans+=dfs(0,inf);
}if(ans==0)puts("no solution!");
else printf("%d\n",ans);
}
51Nod2006 飛行員配對(遞迴)
這道題一看題目二分圖的最大匹配,沒見過的演算法。翻了翻書,和最大流演算法有關,好像很難的樣子。但是這畢竟只是一道基礎題,不用自己嚇自己,不管演算法自己認真的思考一定能想出來的。想的頭都大了呀,於是乎偷偷看了看大神的部落格。真香!具體思路是這樣的 用遞迴思想,外國人和英國人配對,以外國人為主體給外國人...
飛行員配對方案
題目大意 只要外籍飛行員與英籍飛行員匹配就可以駕駛一架飛機,共有n個飛行員,其中有m個外籍的,問最多有多少對匹配的飛行員 乙個外籍乙個英籍 解題思路 方法 網路流 最大流 匈牙利演算法 這裡用網路流 最大流 首先建乙個源點和乙個匯點,源點與外籍飛行員間建立一條有向邊 外籍飛行員方向 匯點與英籍飛行員...
飛行員配對方案問題
題目描述 問題描述 第二次世界大戰時期,英國皇家空軍從淪陷國徵募了大量外籍飛行員。由皇家空軍派出的每一架飛機都需要配備在航行技能和語言上能互相配合的2名飛行員,其中1名是英國飛行員,另1名是外籍飛行員。在眾多的飛行員中,每一名外籍飛行員都可以與其他若干名英國飛行員很好地配合。如何選擇配對飛行的飛行員...