zoukankan      html  css  js  c++  java
  • p2756 飞行员配对方案问题

    传送门

    题目

    英国皇家空军从沦陷国征募了大量外籍飞行员。由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1 名是英国飞行员,另1名是外籍飞行员。在众多的飞行员中,每一名外籍飞行员都可以与其他若干名英国飞行员很好地配合。如何选择配对飞行的飞行员才能使一次派出最多的飞机。对于给定的外籍飞行员与英国飞行员的配合情况,试设计一个算法找出最佳飞行员配对方案,使皇家空军一次能派出最多的飞机。

    对于给定的外籍飞行员与英国飞行员的配合情况,编程找出一个最佳飞行员配对方案,使皇家空军一次能派出最多的飞机。

    输入格式:

    第 1 行有 2 个正整数 m 和 n。n 是皇家空军的飞行员总数(n<100);m 是外籍飞行员数(m<=n)。外籍飞行员编号为 1~m;英国飞行员编号为 m+1~n。

    接下来每行有 2 个正整数 i 和 j,表示外籍飞行员 i 可以和英国飞行员 j 配合。最后以 2个-1 结束。

    输出格式:

    第 1 行是最佳飞行员配对方案一次能派出的最多的飞机数 M。接下来 M 行是最佳飞行员配对方案。每行有 2个正整数 i 和 j,表示在最佳飞行员配对方案中,飞行员 i 和飞行员 j 配对。如果所求的最佳飞行员配对方案不存在,则输出‘No Solution!’。

    分析

    简单的二分图匹配的匈牙利算法(好裸的模板题,真的没啥好说的QAQ)

    代码

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cctype>
    #include<cmath>
    #include<cstdlib>
    #include<queue>
    #include<ctime>
    #include<vector>
    #include<set>
    #include<map>
    #include<stack>
    using namespace std;
    int n,m,ans;
    int g[1100][1100];
    int used[11000],t,belong[11000];
    bool work(int x){
          int i,j,k;
          for(i=1;i<=m;i++)
             if(used[i]!=t&&g[x][i]){
                 used[i]=t;
                 if(!belong[i]||work(belong[i])){
                     belong[i]=x;
                    return 1;
                }
             }
          return 0;
    }
    void go(){
          int i,j,k;
          for(i=1;i<=n;i++){
               t=i;
               if(work(i))ans++;
          }
    }
    int main()
    {     int i,j,k,x,y;
          cin>>n>>m;
          cin>>x>>y;
          while(x!=-1&&y!=-1){
              g[x][y]=1;
              cin>>x>>y;
          }
          go();
          if(ans){
            cout<<ans<<endl;
            for(i=1;i<=m;i++)
               if(belong[i])cout<<belong[i]<<' '<<i<<endl;
          }else {
              puts("No Solution!");
          }
          return 0;
    }

  • 相关阅读:
    .NET面试题系列[2]
    .NET面试题系列[1]
    被淡忘的c#析构函数
    关于Spring IOC容器解释
    工作随笔记 点击除div自身之外的地方,关闭自己
    js获得控件位置
    PHP如何判断对象为空的方法分享
    PHP 网页调用本地exe程序实例
    PHP jQuery实现上传图片时预览图片的功能实例
    Yii 自带的分页实例
  • 原文地址:https://www.cnblogs.com/yzxverygood/p/9039871.html
Copyright © 2011-2022 走看看