zoukankan      html  css  js  c++  java
  • POJ 1469

    简单的二分图匹配问题

     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 using namespace std;
     5 #define N 305
     6 int g[N][N] , visx[N] , visy[N] , cx[N] , cy[N] , p , n;
     7 
     8 int dfs(int u)
     9 {
    10     for(int v = 1 ; v <= n ; v++){
    11         if(g[u][v] && !visy[v]){
    12             visy[v] = 1;
    13             if(cy[v] == -1 || dfs(cy[v])){
    14                 cx[u] = v;
    15                 cy[v] = u;
    16                 return 1;
    17             }
    18         }
    19     }
    20     return 0;
    21 }
    22 
    23 int MaxMatch()
    24 {
    25     int ans = 0;
    26     memset(cx , -1 , sizeof(cx));
    27     memset(cy , -1 , sizeof(cy));
    28     for(int i=1 ; i<=p ; i++){
    29         if(cx[i] == -1){
    30             memset(visy , 0 , sizeof(visy));
    31             ans += dfs(i);
    32         }
    33     }
    34     return ans;
    35 }
    36 
    37 int main()
    38 {
    39    // freopen("a.in" , "r" , stdin);
    40     int T;
    41     scanf("%d" , &T);
    42     while(T--)
    43     {
    44         scanf("%d%d" , &p , &n);
    45         memset(g , 0 , sizeof(g));
    46         for(int i = 1 ; i<=p ; i++){
    47             int k , id;
    48             scanf("%d" , &k);
    49             for(int j=0 ; j<k ; j++){
    50                 scanf("%d" , &id);
    51                 g[i][id] = 1;
    52             }
    53         }
    54         if(MaxMatch() == p) puts("YES");
    55         else puts("NO");
    56     }
    57     return 0;
    58 }
  • 相关阅读:
    SVM的新理解
    特征提取,特征选择
    条件随机场
    分类、检测、识别
    matlab fgetl()
    matlab fopen()
    rar ubuntu
    makefile for opencv
    [洛谷P1231] 教辅的组成
    [洛谷P1514]引水入城
  • 原文地址:https://www.cnblogs.com/CSU3901130321/p/4227578.html
Copyright © 2011-2022 走看看