• LibreOJ #6000. 「网络流 24 题」搭配飞行员 最大匹配


    #6000. 「网络流 24 题」搭配飞行员

    内存限制:256 MiB时间限制:1000 ms标准输入输出
    题目类型:传统评测方式:文本比较
    上传者: 匿名

    题目描述

    飞行大队有若干个来自各地的驾驶员,专门驾驶一种型号的飞机,这种飞机每架有两个驾驶员,需一个正驾驶员和一个副驾驶员。由于种种原因,例如相互配合的问题,有些驾驶员不能在同一架飞机上飞行,问如何搭配驾驶员才能使出航的飞机最多。

    因为驾驶工作分工严格,两个正驾驶员或两个副驾驶员都不能同机飞行。

    输入格式

    第一行,两个整数 n nn 与 m mm,表示共有 n nn 个飞行员,其中有 m mm 名飞行员是正驾驶员。
    下面有若干行,每行有 2 22 个数字 a aa、b bb。表示正驾驶员 a aa 和副驾驶员 b bb 可以同机飞行。
    注:正驾驶员的编号在前,即正驾驶员的编号小于副驾驶员的编号。

    输出格式

    仅一行一个整数,表示最大起飞的飞机数。

    样例

    样例输入

    10 5
    1 7
    2 6
    2 10
    3 7
    4 8
    5 9

    样例输出

    4

    数据范围与提示

    2≤n≤100 2 leq n leq 1002n100

    题目链接:https://loj.ac/problem/6000

    题意:有n个飞行员,其中m个是正飞行员,一架飞机啊需要一个正一个副的飞行员才能起飞,输出最大飞行数量。

    思路:最大匹配版子题

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    #include<set>
    #include<queue>
    #include<stack>
    #include<map>
    #include<vector>
    using namespace std;
    typedef long long ll;
    typedef pair<int,int> P;
    const int maxn=200,maxm=1e5+1000,inf=0x3f3f3f3f,mod=1e9+7;
    const ll INF=1e18+7;
    int n,m;
    int g[maxn][maxn];
    int used[maxn];
    int cy[maxn];
    bool dfs(int u)
    {
        for(int v=1; v<=n; v++)
        {
            if(!g[u][v]) continue;
            if(used[v]) continue;
            used[v]=true;
            if(cy[v]<0||dfs(cy[v]))
            {
                cy[v]=u;
                return true;
            }
        }
        return false;
    }
    int solve()
    {
        int res=0;
        memset(cy,-1,sizeof(cy));
        for(int i=1; i<=n; i++)
        {
            memset(used,false,sizeof(used));
            res+=dfs(i);
        }
        return res;
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        int u,v;
        while(scanf("%d%d",&u,&v)!=EOF)
            g[u][v]=1;
        printf("%d
    ",solve());
        return 0;
    }
    最大匹配
  • 相关阅读:
    深入理解 RPC
    Redis 深度历险
    tomcat性能优化
    高性能IO之Reactor模式
    常用sql语句整理[SQL Server]
    SQLite遇到的关于x64、x86问题
    C#和Javascript的try…catch…finally的一点差别
    C#写Windows服务
    Windows_7_休眠按钮没有了_如何找回?
    XmlReader读取XML
  • 原文地址:https://www.cnblogs.com/GeekZRF/p/7349542.html
Copyright © 2020-2023  润新知