[网络流24题-1]cogs14搭配飞行员

来源:互联网 发布:网站充值功能源码 编辑:程序博客网 时间:2024/05/11 18:47

你们就当我又水了一贴吧。。。
纯二分图匹配。。匈牙利算法。。。

#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#include <vector>#include <queue>using namespace std;const int maxn=200;vector<int > g[maxn];void addedge(int from,int to){    g[from].push_back(to);    g[to].push_back(from);}int match[maxn];bool book[maxn];bool dfs(int v){    //本身的结点不标为true    for(unsigned i=0;i<g[v].size();i++)    {        int u=g[v][i];        if(book[u]==false)        {            book[u]=true;            if(match[u]==0 || dfs(match[u]))            {                match[u]=v;                match[v]=u;                return true;            }        }    }    return false;}int main(){    freopen("flyer.in","r",stdin);    freopen("flyer.out","w",stdout);    int n,m;    scanf("%d%d",&n,&m);    int from;    int to;    while(scanf("%d%d",&from,&to)==2)    {        addedge(from,to);    }    int ans=0;    for(int i=1;i<=n;i++)    {        if(match[i]==0)        {            memset(book,0,sizeof(book));            if(dfs(i))            {                ans++;            }        }    }    printf("%d\n",ans);    return 0;}
0 0
原创粉丝点击