zoukankan      html  css  js  c++  java
  • FOJ 2232 匈牙利算法找二分图最大匹配

    题目链接

    简单理解匈牙利算法

    简单理解二分图

    尽量让每一个随从击败一个对手且随从全部存活,关键是为每一个随从找对手(递归过程),"腾"。

    #include<iostream>
    #include<cstdio> 
    #include<cstring>
    using namespace std;
    int used[110];
    int g[110][110];  //建立随从和对手的对战关系
    int ee[110];
    int n;
    struct people{
        int live;
        int attack;
    }man[110],enemy[110];
    bool find(int j) {
        for(int k=1;k<=n;k++) {
            if(g[j][k] && used[k]==0) {
                used[k]=1;
                if(ee[k]==0 || find(ee[k])) {
                        ee[k]=j;
                        return true;        
                }
            }
        }
        return false;
    }
    
    
    int main() {
        int test,all;
        scanf("%d",&test);
        while(test--) {
            cin>>n;
            all=0;
            memset(ee,0,sizeof(ee));
            memset(g,0,sizeof(g));
            for(int i=1;i<=n;i++) {
                scanf("%d%d",&man[i].live,&man[i].attack);
            }
            for(int i=1;i<=n;i++) {
                scanf("%d%d",&enemy[i].live,&enemy[i].attack);
            }
            for(int i=1;i<=n;i++) {
                for(int j=1;j<=n;j++) {
                    g[i][j]=man[i].attack>=enemy[j].live&&man[i].live>enemy[j].attack;
                }
            }
            int flag=1;
            for(int i=1;i<=n;i++) {
                memset(used,0,sizeof(used));
                if(!find(i)) {
                    flag=0;
                    break;
                }
            }
            if(flag==1) {
                printf("Yes
    ");
            }
            else {
                printf("No
    ");
            }          
        }
        return 0;
    } 
  • 相关阅读:
    Hive2.0函数大全(中文版)
    Centos7 安装并配置redis
    Java内部类
    beeline: 新版连接Hive server的工具
    jsoup的Document类
    Jsoup类
    jsoup的Node类
    jsoup的Element类
    Java中的多线程
    Java中的文件IO流
  • 原文地址:https://www.cnblogs.com/LinesYao/p/5463655.html
Copyright © 2011-2022 走看看