zoukankan      html  css  js  c++  java
  • Machine Schedule

    二分图匹配求最小点覆盖,注意只要与0连接的都不算(初始状态,不须重启)

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<cmath>
     6 using namespace std;
     7 const int maxn=1007;
     8 int n,m,k,ans;
     9 int usd[maxn],ret[maxn];
    10 bool map[maxn][maxn];
    11 void pre(){
    12   memset(usd,false,sizeof(usd));
    13   memset(map,false,sizeof(map));
    14   memset(ret,-1,sizeof(ret));
    15   ans=0;
    16 }
    17 bool dfs(int x){
    18   for(int i=0;i<m;i++){
    19     if(!usd[i]&&map[x][i]){
    20       usd[i]=true;
    21       if(ret[i]==-1||dfs(ret[i])){
    22         ret[i]=x;
    23         return true;
    24       }
    25     }
    26   }
    27   return false;
    28 }
    29 int main(){
    30   while(cin>>n&&n!=0){
    31       pre();
    32     cin>>m>>k;
    33     for(int i=0;i<k;i++){
    34       int a,b,c;cin>>c>>a>>b;
    35       if(a==0&&b==0) continue;
    36       map[a][b]=true;
    37     }
    38     for(int i=0;i<n;i++){
    39       memset(usd,false,sizeof(usd));
    40       if(dfs(i)) ans++;
    41     }
    42     cout<<ans<<endl;
    43   }
    44   return 0;
    45 } 
  • 相关阅读:
    安装Hive2及配置HiveSever2
    sqoop语句
    Sqoop配置
    IO流的概述
    List集合的简单使用
    包装类
    访问权限修饰符
    接口
    抽象类
    final关键字
  • 原文地址:https://www.cnblogs.com/lcan/p/9792702.html
Copyright © 2011-2022 走看看