zoukankan      html  css  js  c++  java
  • pku3041 Asteroids

    http://poj.org/problem?id=3041

    二分图最大匹配,匈牙利算法(dfs+邻接矩阵),König定理

    König定理:最大匹配数 == 最小点覆盖数

    matrix67大神的证明:http://www.matrix67.com/blog/archives/116

    好像喜欢上用girl命名右集合数组了。。。

     1 #include <stdio.h>
     2 #include <string.h>
     3 #define N 521
     4 
     5 int k, n;
     6 int map[N][N], girl[N], flag[N];
     7 
     8 int find(int x)
     9 {
    10     int i;
    11     for(i=1; i<=n; i++)
    12     {
    13         if(!flag[i] && map[x][i])
    14         {
    15             flag[i] = 1;
    16             if(girl[i]==-1 || find(girl[i]))
    17             {
    18                 girl[i] = x;
    19                 return 1;
    20             }
    21         }
    22     }
    23     return 0;
    24 }
    25 
    26 int main()
    27 {
    28     int i, sum, a, b;
    29     memset(map, 0, sizeof(map));
    30     memset(girl, -1, sizeof(girl));
    31     scanf("%d%d", &n, &k);
    32     for(i=0; i<k; i++)
    33     {
    34         scanf("%d%d", &a, &b);
    35         map[a][b] = 1;
    36     }
    37     sum = 0;
    38     for(i=1; i<=n; i++)
    39     {
    40         memset(flag, 0, sizeof(flag));
    41         sum += find(i);
    42     }
    43     printf("%d\n", sum);
    44     return 0;
    45 }
  • 相关阅读:
    CF1450H2
    CF1379F2
    CF1217F
    CF1393E2
    CF1510H
    CF1514E
    CF1515G
    CF1516E
    在pycharm中导入PyMysql出错,解决方法
    搭建fastdfs文件服务器
  • 原文地址:https://www.cnblogs.com/yuan1991/p/pku3041.html
Copyright © 2011-2022 走看看